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服务检索或存储数据
更多建议: