了解内容提供商和解析程序

时间:2014-01-06 13:26:52

标签: java android android-contentresolver

我了解内容解析器接受来自客户的请求,并通过将这些请求指向具有不同权限的内容提供商来解决这些请求。

我正在浏览vogellas tutorial,特别是queryCalendar方法,我注意到没有内容提供商的调用。我只看到内容解析器的代码:
 ContentResolver cr = getContentResolver();

为什么没有要求内容提供商

2 个答案:

答案 0 :(得分:0)

因为Content Provider是由Android系统本身实现的。如果您查看代码,您会看到这一点:

Uri uri = Calendars.CONTENT_URI;

在Android系统中,有一个内容提供商在某处注册处理该Uri的内容提供商请求。

简而言之:如果您想将某些数据暴露给其他应用程序(当然,没有人阻止您在应用程序中使用它),您将只面对内容提供商。然后,您需要实现自己的一个(并通过Uri公开它)。内容解析器是使用Uri与内容提供者交谈的东西。

您还可以查看this Vogella tutorial,了解如何定义自己的内容提供商。

答案 1 :(得分:0)

您会看到对ContentResolver的调用,因为ContentResolver负责调用ContentProvider的方法并返回数据。

写在official Android Guide on ContentProviders

  

"如果要访问内容提供程序中的数据,可以使用应用程序上下文中的ContentResolver对象作为客户端与提供程序进行通信。 ContentResolver对象与提供程序对象进行通信,提供程序对象是实现ContentProvider的类的实例。提供者对象从客户端接收数据请求,执行请求的操作,并返回结果。"

如果您想正确学习内容提供商,

以下教程是在线最佳教程(以及官方Android API Guide),用于了解如何正确实施内容提供商。

  1. Content Provider Basics

  2. How to Use Existing Content Providers in your app

  3. How to write your own custom Content Providers

  4. 这些教程帮助我对内容提供商有了深刻的理解,我不再害怕了! :)希望他们也帮助你!

    P.S。完成内容提供程序后,您可能希望使用Loaders将内容提供程序中的数据加载到UI中。 official Android tutorial on Loaders非常适合。