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类中的:

  Android之Content ProviderII

  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类可以按如下定义:

  Android之Content ProviderII

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

  Android之Content ProviderII

  定义列名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>可以会像这样:

  Android之Content ProviderII

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

  Android之Content ProviderII

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

Content URI Summary

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

更多相关文章

  1. android bundle 在activity之间传递数据 点击一组图片放大,再次点
  2. Android中WebView和JavaScript之间传递json格式数据
  3. Android使用WebView加载网页及数据
  4. Android SQLite数据库中的表详解
  5. Android使用自定义字体
  6. Android Studio 第四十九期 - Sqlite数据库四种写法
  7. Android自定义dialog对话框悬浮在界面上
  8. Android中SQLite数据库操作(2)——SQLiteOpenHelper类

随机推荐

  1. android 监听网络状态的变化及实战
  2. Android(4.2) Sensors 学习——G-sensor,
  3. Android练习项目 Mp3播放器实现(一)
  4. Android Studio 基础 之 一键快速实现一
  5. Android中自定义ListView无法响应OnItemC
  6. Android心得3--拨号器
  7. Android中基于心知天气API获取天气信息
  8. Android TV 焦点移动飞框的实现
  9. 说说 Android(安卓)中如何操作音频与视频
  10. [置顶] Android中window,view,Activity的关