Androi--内容提供器

来源:互联网 发布:php商城系统 开源 编辑:程序博客网 时间:2024/05/13 09:42

2017/08/23:

2017/08/30:
内容提供器:主要用于不同的应用程序之间实线数据功能共享的功能

ContentResolver 的基本用法

对于每一个应用程序来说,如果想要访问内容提供器中共享的数据,就一定要借助ContentResolve 类,可以通过Context 中的getContentResolver()方法获取到该类的实例。ContentResolver 中提供了一系列的方法用于对数据进行CRUD 操作,其中insert()方法用于添加数据,update()方法用于更新数据,delete()方法用于删除数据,query()方法用于查询数据。

读取系统联系人

 

  1. 在layout.xml文件下:
    <ListView    android:id="@+id/listview_contact"    android:layout_width="match_parent"    android:layout_height="match_parent"></ListView>
  2.  主活动下:
    package com.example.zzz.ca;import android.database.Cursor;import android.provider.ContactsContract;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.ListView;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    ListView listView;    ArrayAdapter<String> arrayAdapter;    List<String> contactList=new ArrayList<>();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        listView=(ListView)findViewById(R.id.listview_contact);        arrayAdapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,contactList);        listView.setAdapter(arrayAdapter);        readContacts();    }    private void readContacts(){        Cursor cursor=null;        try {            cursor=getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,                    null,null,null,null);            while (cursor.moveToNext()){                String name=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));                String number="未找到联系人号码";                number=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));                contactList.add(name+"\n"+"number");            }        }catch (Exception e){            e.printStackTrace();        }finally {            if (cursor!=null){                cursor.close();            }        }    }}
  3. 在Manifest.xml下加入
    <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>

     

Cursor:
  • Cursor 是每行的集合。
  • 使用 moveToFirst() 定位第一行。
  • 你必须知道每一列的名称。
  • 你必须知道每一列的数据类型。
  • Cursor 是一个随机的数据源。
  • 所有的数据都是通过下标取得。