16 Content Provider总结

第16天

Content Provider

一, 什么是Content Provider?

内容提供者 Android四大主件之一 :短信记录 通讯录 联系人 自定义

>Content Provider  所有程序间数据的存储和检索的桥梁 把各个程序里的数据共享 
各个程序间  数据共享的唯一途径 (Android  没有提供一块独立的空间  将各个程序的数据共享  
只能通过  内容提供者  共享数据)

二, 作用

将自己程序的私有数据 提供里一套对外的访问接口(增,删,改,查)
是基于Uri向外提供数据访问接口

使用:
Content Provider 提供私有数据
Uri:统一资源标识符  (路径)
ContentResolver:内容解析器 

三,URI 统一资源标识符
格式:content://应用程序包名.provider/表名(一般情况)

四, 访问Content Provider 提供的数据

1,获取CntentResolver对象
2,通过CntentResolver对象 增删改查

五,联系人的数据库文件的位置
/data/data/com.android.providers.contacts/databases.contacts2.db
六,数据库中重要的几张表
主要包含三张表,contacts,raw_contacts,data

contacts表:contacts表中一条记录对应联系人列表中的一个联系人
(通过可能包含多个联系人的信息),此表不可直接插入联系人。
它是raw_contacts表记录的整合

raw_contacts表:未经处理的联系人,当插入一个联系人时,
系统会检测当前表中是否有存在相同号码、姓名的联系人,
根据用户设置是否聚合,将可以整合的记录指向同一个contact_id

data表:data表中的记录仅仅保存的是某一种类型的数据,
里面有一个地段mimetype_id,
用来关联mimetype表中的类型
,一个raw_contact一般会对应多条data记录

Uri:
// ContentResolver是通过uri来获取数据的,
// 电话号有电话号的uri
// 邮箱有邮箱的uri
// data有data的uri
// 这一系列uri是contentprovider自己定义的,我们只是调用
private static String uri_rawcontacts = “content://com.android.contacts/raw_contacts”;
private static String uri_contacts_phones = “content://com.android.contacts/data/phones”;
private static String uri_contacts_emails = “content://com.android.contacts/data/emails”;
private static String uri_contacts_data = “content://com.android.contacts/data”;

类型:
vnd.android.cursor.item/name
vnd.android.cursor.item/phone_v2
vnd.android.cursor.item/email_v2

附上URi地址图:这里写图片描述

原文地址:https://www.cnblogs.com/muyuge/p/6152245.html