我在 Internet 上观看了有关ContentProvider
如何定义和使用ContentProvider
.
我对使用名为getContentResolver()
. 这个方法返回什么?
MyContentProvider
没有实例化,代码只是写了getContentProvider().query()
.
我不明白如何ContentProvider
工作。
我在 Internet 上观看了有关ContentProvider
如何定义和使用ContentProvider
.
我对使用名为getContentResolver()
. 这个方法返回什么?
MyContentProvider
没有实例化,代码只是写了getContentProvider().query()
.
我不明白如何ContentProvider
工作。
它返回内容解析器。
什么是内容解析器?
内容解析器是您的应用程序中的单个全局实例,它提供对您(和其他应用程序的)内容提供者的访问。内容解析器的行为正如其名称所暗示的那样:它接受来自客户端的请求,并通过将这些请求定向到具有不同权限的内容提供者来解析这些请求。为此,内容解析器存储了从权限到内容提供者的映射。这种设计很重要,因为它允许以简单且安全的方式访问其他应用程序的内容提供程序。
Content Resolver 包括与 Content Provider 类中的抽象方法(插入、删除、查询、更新)对应的 CRUD(创建、读取、更新、删除)方法。Content Resolver 不知道与之交互的 Content Providers 的实现(也不需要知道);每个方法都传递一个 URI,该 URI 指定要与之交互的 Content Provider。
什么是内容提供者?
Content Resolver 提供了来自应用程序的 Content Providers 的抽象,而 Content Providers 提供了来自底层数据源(即 a SQLite database
)的抽象。它们提供了定义数据安全性的机制(即通过强制读/写权限),并提供了一个标准接口,将一个进程中的数据与另一个进程中运行的代码连接起来。
内容提供者提供了一个用于发布和消费数据的接口,它基于一个简单的 URI 寻址模型,使用content:// schema
. 它们使您能够将应用程序层与底层数据层分离,通过抽象底层数据源使您的应用程序数据源不可知。
getContentResolver() 为您的应用程序包返回一个 ContentResolver 实例。
从 developer.android.com 粘贴
内容提供者管理对结构化数据集的访问。它们封装数据,并提供定义数据安全性的机制。内容提供程序是将一个进程中的数据与另一个进程中运行的代码连接起来的标准接口。
当您想要访问内容提供者中的数据时,您可以使用应用程序上下文中的 ContentResolver 对象作为客户端与提供者进行通信。ContentResolver 对象与提供者对象进行通信,提供者对象是实现 ContentProvider 的类的实例。提供者对象接收来自客户端的数据请求,执行请求的操作,并返回结果。
http://developer.android.com/guide/topics/providers/content-providers.html