Android系统为常用数据类型提供了很多预定义的ContentProvider(声音,视频,图片,联系人等),他们大多位于android.provider包中。开发人员可以查询这些provider以获得其中的信息(有些需要适当的权限来读取数据)
Browser(浏览器) 读取或修改书签、浏览记录或网络搜索
CallLog(通话日志) 查看或更新通话历史
Contacts(联系人) 获取、修改或保存联系人信息
LiveFolders(文件夹) 由ContentProvider提供内容的特定文件夹
MediaStore(存储) 访问声音、视频和图片
Setting 查看和获取蓝牙设置、铃声和其他设备偏好
SyncStateContract 用于使用数据数组账号关联数据的ContentProvider约束。希望使用标准方式保存数据的provider时可以使用
UserDictionary 在可预测文本输入时,提供用户定义单词给输入法使用。应用程序和输入法能增加数据到该字典。单词能关联频率信息和本地化信息。
content:// aaa / bbb / 123
content://为前缀,无需修改
aaa为访问的应用
bbb为哪类被请求
123为_ID值,如查全部数据可和前方斜杠一起删除
query()方法的参数分别为:
(1) 目标Uri
(2) 查询列名
(3) 决定哪些行被返回的过滤器,类似于SQL中的WHERE语句(但不是WHERE语句自身),null表示返回全部行(除非Uri限制查询结果为单行)
(4) 选择参数
(5) 返回记录的排序器,类似于SQL中的ORDER BY语句(但不是ORDER BY语句自身),null表示默认顺序返回记录(这可能是无序的)
ContentResolver contentResolver=getContentResolver();
Uri queryUri= ContactsContract.Contacts.CONTENT_URI;
String queryColumn[]={ContactsContract.Contacts._ID, ContactsContract.Contacts.DISPLAY_NAME};
Cursor cursor=contentResolver.query(queryUri,queryColumn,null,null,null);
(1) ContactsContract.Contacts.CONTENT_URI 管理联系人的Uri
ContactsContract.Contacts._ID 外键ID
ContactContract.Contracts.DISPLAY_NAME 联系人名
(2) ContactsContract.CommonDataKinds.Phone.CONTENT_URI 管理联系人的电话的Uri
ContactsContract.CommonDataKinds.Phone.CONTACT_ID 外键ID
ContactsContract.CommonDataKinds.Phone.NUMBER 电话号
(3) ContactsContract.CommonDataKinds.Email.CONTENT_URI 管理联系人的Email的Uri
ContactsContract.CommonDataKinds.Email.CONTACT_ID 外键ID
ContactsContract.CommonDataKinds.Email.DATA Email字段
部分ContentProvider需要获取权限后才能查看或修改
如:
android.permission.READ_CONTACTS android.permission.READ_PHONE_NUMBERS