codecamp

Android 内容提供者

Android使用内容提供者将数据抽象为服务。

内容提供者在应用程序之间的共享数据方面发挥着重要作用。

内容提供者使数据源看起来像启用REST的数据提供者,例如网站。

要从内容提供者检索数据或将数据保存到内容提供者,你将需要使用一组类似REST的URI。

例子

例如,如果你要从内容提供程序检索一组书籍(即书籍数据库的封装),需要使用如下所示的URI:

content://com.android.book.BookProvider/books

要从图书数据库中检索特定图书,你需要使用如下所示的URI:

content://com.android.book.BookProvider/books/101

设备上的任何应用程序都可以使用这些URI访问和操作数据。

内容提供者的架构

设备上的每个内容提供者都像网站一样注册一个称为authority的字符串。

authority字符串构成一组URI的基础,这些内容提供者可以提供的。

此authority注册在 AndroidManifest.xml 文件中定义。

以下是如何在 AndroidManifest.xml 中注册提供者的两个示例:

<provider android:name="SomeProvider"
          android:authorities="com.your-company.SomeProvider" />

<provider android:name="NotePadProvider"
          android:authorities="com.google.provider.NotePad"/>

authority类似于该内容提供者的域名。

内容提供者,如网站,有一个作为起始URL的基本域名。

鉴于上述的authority注册,这些提供程序将使用以该权限前缀开头的URL:

content://com.your-company.SomeProvider/
content://com.google.provider.NotePad/

Android提供的提供者可能没有完全限定的权限名称。

例如,contacts而不是 com.google.android.contacts

内容提供者与其他

仅当你想要在外部或应用程序之间共享数据时,才需要内容提供者抽象化。

对于内部数据访问,应用程序可以使用以下内容:

  • 首选项:你可以持久存储应用程序首选项的一组key/value对
  • 文件:应用程序的内部文件
  • SQLite:SQLite数据库
  • 网络:通过Internet的HTTP服务检索或存储数据
Android Intent意图
Android 内容提供者URL
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }