WEB开发网
开发学院手机开发Android 开发 详解 Android content provider 阅读

详解 Android content provider

 2010-03-15 15:35:00 来源:WEB开发网   
核心提示:vnd.android.cursor.item/vnd.example.rail o 对多记录:vnd.android.cursor.dir/vnd.yourcompanyname.contenttype 例如,请求所有train记录的URI格式如下 content://com.example.transportati
vnd.android.cursor.item/vnd.example.rail o 对多记录:vnd.android.cursor.dir/vnd.yourcompanyname.contenttype 例如,请求所有train记录的URI格式如下 content://com.example.transportationprovider/trains 返回的MIME类型: vnd.android.cursor.dir/vnd.example.rail · 如果输出的字节数据太大以至于不能放在数据表中,如大的bitmap文件,那么向客户端输出的字段实际上应该包含一个content: URI字符串。这个字段提供给客户端访问数据文件的方式。 记录中也要包含名为“_data”的字段。 “_data”列出了该文件在设备上的确切的文件路径,它不是提供给客户端访问的,而是由ContentResolver读取。客户端可以在面向用户字段上调用 ContentResolver.openInputStream() ,这个字段保存条目的URI。

ContentResolver会请求记录的"_data"字段。由于ContentResolver比起客户端来说有更高的权限,所以 ContentResolver 可以直接访问文件,向客户端返回一个read wrapper。 content provider实现的例子,参考随同SDK一同发布的Notepad 示例应用程序中NodePadProvider 类。声明content provider 为了让Android系统知道我们开发的content provider,需要在应用程序的AndroidManifest.xml文件中声明一个元素。没有在mainfest中声明的Content providers对Android系统来说是不可见的。 Name属性是能够完全确定ContentProvider子类的属性;authorities属性是标识provider的content: URI的权限部分。例如,ContentProvider的子类AutoInfoProvider的元素定义如下: 注意:authorities属性忽略了content: URI的路径部分。例如,如果AutoInfoProvider为不同类型的汽车或制造商管理不同的子表 content://com.example.autos.autoinfoprovider/honda content://com.example.autos.autoinfoprovider/gm/compact content://com.example.autos.autoinfoprovider/gm/suv 这些路径不要在manifest中声明,authority是标识provider的,provider能够解释所选择的URI的路径部分。

其它属性可以设置读写数据的权限,提供可以显示给用户的图标或文本,使provider有效或无效等等。如果在content provider多个运行版本之间不需要数据的同步,把multiprocess属性设置为“true”,这允许在每个客户进程中创建provider实例,消除执行IPC的需求。 Content URI 总结下面重温一下content URI的重要部分: content://com.example.transportationprovider/trains/122 v:*

上一页  1 2 3 4 5 6  下一页

Tags:详解 Android content

编辑录入:coldstar [复制链接] [打 印]
赞助商链接