Android学习笔记:内容提供器(Content Provider)

一、概念

内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证程序被访数据的安全性。不同于文件存储和SharedPreferences存储中的两种全局可读写操作模式,内容提供器可以选择只对哪一部分数据进行共享,从而保证我们程序中的隐私数据不会有泄露的风险。

(1)如果想要实现跨程序共享数据的功能,官方推荐的方式是使用内容提供器。
(2)内容提供器一定要在AndroidManifest.xml文件中注册才可以使用。

二、用法

内容提供器的用法一般有两种:①一种是使用现有的内容提供器来读取和操作相应程序中的数据,②另一种就是创建自己的内容提供器给我们程序的数据提供外部访问接口。可以通过创建一个类去继承ContentProvider的方式来创建一个自己的内容提供器。ContentProvider类中有6个抽象方法,我们在使用自类继承它的时候,需要将这6个方法全部重写,分别为:onCreate()、query()、insert()、update()、delete()、getType()。

  • onCreate():初始化内容提供器的时候调用。
  • query():从内容提供器中查询数据。
  • insert():向内容提供器中添加一条数据。
  • update():更新内容提供器中已有的数据。
  • delete():从内容提供器中删除数据。
  • getType():根据传入的内容URI来返回相应的MIME类型。

每个ContentProvider都有一个公共的URI,这个URI用于表示这个Content Provider所提供的数据。

三、URI

内容URI:可以非常清楚地表达出我们想要访问哪个程序中哪张表里地数据。

//内容URI的格式如下
//1、标准的内容URI
content://com.example.app.provider/table1
//2、给内容URI加上一个id
//表示期望访问的是com.example.app这个应用table1表中id为1的数据
content://com.example.app.provider/table1/1

//在得到了内容URI字符串后,我们还需要将它解析为Uri对象才可以作为参数传入。
//只需要调用Uri.parse()方法,就可以将内容URI字符串解析chengUri对象。
Uri uri = Uri.parse("content://com.example.app.provider/table1");

内容URI的格式主要就只有以上两种,以路径结尾就表示期望访问该表中的所有数据,以id结尾就表示期望访问该表中拥有相应id的数据。

四、ContentProvider、ContentResolver、ContentObserver有什么区别?

(待补充)

你可能感兴趣的:(Android,Android学习笔记)