Creating a Content Provider

  要建立一个content provider,你必须:

  1、建立一个系统来存储数据。大多数content providers存在他们的数据使用Android的文件存在方法或SQLite数据库,但你可以存储你的数据你希望的任何方法。Android提供 SQLiteOpenHelper类来帮助你建立一个数据库和SQLiteDatabase来管理它。

  2、扩展ContentProvider类来提供数据的访问。

  3、声明content provider在manifest文件为你的应用程序(AndroidManifest.xml)。

  下面的部分有关后两样的注意事项。

Extendig the Content Provider class

  你定义一个ContentProvider子类来暴露你你的数据给别人使用ContenResolver和Cursor期望的协议。原则上,这意味着实现6个虚方法声明在ContentProvider类中的:

  

  query()方法必须返回一个Cursor 对象可以遍历你请求的数据。Cursor它本身是个接口,但Android提供一些准备好的Cursor对象你可以使用。例如,SQLiteCursor能可遍历数据存储在SQLite数据库。你获得一个Cursor对象通过调用任何SQLiteDatabase的query()方法。也有其它的Cursor实现 --例如MatrixCuror --对于数据不存在于数据库中的情况。

  因为这些ContentProvider方法能各种ContentResolver对象调用在不同的进程和线程里,他们必须以线程安全的方式实现。

  作为礼貌,你也可能希望调用ContentResolver.notifyChange()来通知收听者当有有数据修改时。

  除了定义它的子类外,有其它的步骤你应该做来简单客户的工作并且让类更易访问:

  1、定义一个公共的静态常量Uri命名为CONTENT_URI。这是代表全"content:URI"的字符串,你的provider操作的。你必须 定义一个独特的字符串为这个值。最好的解决方法是使用全称类名作为content provider(小写)。例如,TransportationProvider的URI类可以按如下定义:

  

  如果provider有子表,也定义CONTENT_URI常量给每一个子表。这些URI应该有同样的权限,只能被他们的路径分辨。例如:

  

  定义列名content provider将会返回给客户的。如果你在使用一个潜在的数据库,这些列名通常同一的SQL database列名。也定义公共的静态String常量,客户可以使用来查询指定的列。

  …………(此处省略250字)

Declaring the content provider

  为了让Android系统知道你开发的content provider,声明它用<provider>元素在manifest文件里。Content Providers没有在manifest文件里对Android系统不可见。

  name局长覆盖了ContentProvider子类。authorities属性content:URI权限。例如如果ContentProvider子类是AutoInfoProvider,<provider>可以会像这样:

  

  注意authorities属性遗漏了content:URI路径。例如,如果AutoInfoProvider控制子表为不同的auto或不同的制造者,

  

  …………(此处省略250字)

Content URI Summary

  …………(此处省略250字)

更多相关文章

  1. mybatisplus的坑 insert标签insert into select无参数问题的解决
  2. python起点网月票榜字体反爬案例
  3. 《Android开发从零开始》——25.数据存储(4)
  4. Android系统配置数据库注释(settings.db)
  5. Android中不同应用间实现SharedPreferences数据共享
  6. android图表ichartjs
  7. Android开发——Android搜索框架(二)
  8. Android内容提供者源码
  9. Android(安卓)Studio & ADT 快捷键配置文件所在目录,自定义后可导

随机推荐

  1. 简单几步,教你使用scikit-learn做分类和回
  2. Android常用小功能实例
  3. 超简单!基于Python搭建个人“云盘”
  4. Numpy基础20问
  5. 47页PPT | 如何利用Python进行自动化办公
  6. 新版本chrome 浏览器非受信https站点访
  7. Veeam备份虚拟机报错
  8. 教你预测北京雾霾,基于keras LSTMs的多变
  9. seaborn常用的10种数据分析图表
  10. 基于geopandas的空间数据分析-深入浅出分