Android之ContentProvider

ContentProvider:为存储和获取数据提供统一的接口。可以在不同的应用程序之间共享数据。Android已经为常见的一些数据提供了默认的ContentProvider
 1、ContentProvider使用表的形式来组织数据    无论数据的来源是什么,ContentProvider都会认为是一种表,然后把数据组织成表格   2、ContentProvider提供的方法    query:查询    insert:插入    update:更新    delete:删除    getType:得到数据类型    onCreate:创建数据时调用的回调函数   3、每个ContentProvider都有一个公共的URI,这个URI用于表示这个ContentProvider所提供的数据。Android所提供的ContentProvider都存放在android.provider包当中

ContentProvider的内部原理
  自定义一个ContentProvider,来实现内部原理   步骤:   1、定义一个CONTENTURI常量(里面的字符串必须是唯一)   Public static final Uri CONTENTURI = Uri.parse("content://com.WangWeiDa.MyContentprovider");   如果有子表,URI为:   Public static final Uri CONTENT_URI = Uri.parse("content://com.WangWeiDa.MyContentProvider/users");   2、定义一个类,继承ContentProvider   Public class MyContentProvider extends ContentProvider   3、实现ContentProvider的所有方法(query、insert、update、delete、getType、onCreate)

为什么要用 ContentProvider?它和 sql 的实现上有什么差别?

ContentProvider 屏蔽了数据存储的细节,内部实现对用户完全透明,用户只 需要关心操作数据的 uri 就可以了,ContentProvider 可以实现不同 app 之间 共享。Sql只能在该工程的内部共享数据,ContentProvider能在工程之间实现数据共享。
Sql 也有增删改查的方法,但是 sql 只能查询本应用下的数据库。而 ContentProvider 还可以去增删改查本地文件. xml 文件的读取等。

如何通过一套标准及统一的接口获取其他应用程序暴露的数据?

Android提供了ContentResolver,外界的程序可以通过ContentResolver接口访问ContentProvider提供的数据。

contentprovider怎么实现数据共享?

一个程序可以通过实现一个Content provider的抽象接口将自己的数据完全暴露出去,而且Content providers是以类似数据库中表的方式将数据暴露。Content providers存储和检索数据,通过它可以让所有的应用程序访问到,这也是应用程序之间唯一共享数据的方法。要想使应用程序的数据公开化,可通过2种方法:创建一个属于你自己的Content provider或者将你的数据添加到一个已经存在的Content provider中,前提是有相同数据类型并且有写入Content provider的权限。

Android如何访问自定义ContentProvider

第一:得到ContentResolver类对象:ContentResolver cr = getContentResolver(); 第二:定义要查询的字段String数组。 第三:使用cr.query();返回一个Cursor对象。 第四:使用while循环得到Cursor里面的内容

张鹏宇

继续阅读此作者的更多文章