预定义ContentProvider

Android系统为常用数据类型提供了很多预定义的ContentProvider(声音,视频,图片,联系人等),他们大多位于android.provider包中。开发人员可以查询这些provider以获得其中的信息(有些需要适当的权限来读取数据

Android提供的常见ContentProvider

Browser(浏览器)  读取或修改书签、浏览记录或网络搜索

CallLog(通话日志)  查看或更新通话历史

Contacts(联系人)  获取、修改或保存联系人信息

LiveFolders(文件夹)  由ContentProvider提供内容的特定文件夹

MediaStore(存储)  访问声音、视频和图片

Setting  查看和获取蓝牙设置、铃声和其他设备偏好

SyncStateContract  用于使用数据数组账号关联数据的ContentProvider约束。希望使用标准方式保存数据的provider时可以使用

UserDictionary  在可预测文本输入时,提供用户定义单词给输入法使用。应用程序和输入法能增加数据到该字典。单词能关联频率信息和本地化信息。

URI组成

content:// aaa / bbb / 123

content://为前缀,无需修改

aaa为访问的应用

bbb为哪类被请求

123为_ID值,如查全部数据可和前方斜杠一起删除

查询预定义ContentProvider

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);

联系人的URI及列名

(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

你可能感兴趣的:(android,java)