内容提供器用于应用程序间的数据提供和获取
比较常见的操作就是读取联系人,读取短信等功能
标准URI
Android中的内容Uri,给内容提供器中的数据建立了唯一标识符
scheme+authority+path(+id)
例如:content://com.example.app.provider/table1,content://com.example.app.provider/table1/1
内容Uri对应的MIME类型:
路径结尾:vnd.android.cursor.dir/vnd.com.example.provider.table1
id结尾:vnd.android.cursor.item/vnd.com.example.provider.table1
ContentResolver访问内容提供器中的数据
ContentResolver contentResolver=getContentResolver();
ContentResolver提供了数据的CRUD,insert,update,delete,query
示例代码:读取联系人姓名和电话
ContentResolver contentResolver=getContentResolver();
Cursor cursor=contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,null);
if (cursor!=null){
while(cursor.moveToNext()){
String displayName=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String number=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Log.i(TAG, "onCreate: "+displayName+" "+number);
}
}
P.s.读取联系人信息要动态获取READ_CONTACTS权限
提供自己的内容提供器ContentProvider
新建一个类继承ContentProvider方法,覆写6个方法
用UriMatch类实现匹配Uri的功能
写完记得在AndroidManifest中注册
(用到的时候请自行研究,这里简单说明)