Android之Content ProviderII
2011-06-09 10:03
441 查看
【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字)
要建立一个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字)
相关文章推荐
- android contentprovider
- Android Content Provider
- android contentprovider内容提供者
- Android数据存储之ContentProvider基本原理
- android ContentProvider结合SQLiteHelper实现数据的共享<一>
- 第76章、再识Intent-调用ContentProviderl程序(从零开始学Android)
- Android ContentProvider介绍
- Android SQLite Database and ContentProvider - Tutorial
- Android进阶——ContentProvider&ContentResolver
- Android Content Provider Tutorial--安卓内容提供者系列3--操作安卓联系人
- android,ContentProvider+ContentObserver+ContentResolver,用法。
- android原生的数据库实现[ContentProvider+SQLiteOpenHelpe...
- Android 四大组件学习之ContentProvider四
- Android开发教程之ContentProvider数据存储
- Android应用开发之ContentProvider
- Android 存储(本地存储 SD卡存储 SharedPreference SQLite ContentProvider)
- Android之ContentProvider整合SQLite数据库实例
- Android Content Provider Tutorial--安卓内容提供者系列1--内容提供者介绍
- Android Content Provider Tutorial--安卓内容提供者系列4--如何创建内容提供者
- Android Content Provider Tutorial--安卓内容提供者系列5--Loader用法