Android - 与Content Provider的意图匹配

时间:2014-07-15 01:41:39

标签: android android-intent android-contentprovider

通过阅读Intent文档,我发现它可以用于启动活动,服务或发送广播。

我想问一下Intent与内容提供商的关系。我使用了日历和联系人内容提供商(Common Intents之后),但仍然使用startActivity。我问,因为PackageManager有一个名为queryIntentContentProviders的API,注释为:

Retrieve all providers that can match the given intent.

我想问一下意图与内容提供商匹配的用例。

1 个答案:

答案 0 :(得分:1)

由于这是作为API级别19(KitKat)的一部分添加的,我的猜测是它与Storage Access Framework一起使用。

  
      
  • 当应用程序(在此示例中为照片应用程序)触发意图ACTION_OPEN_DOCUMENTACTION_CREATE_DOCUMENT时,交互就会开始。   意图可以包括过滤器以进一步细化标准   例如,“给我所有具有'图像'MIME类型的可打开文件。”
  •   
  • 一旦意图触发,系统选择器将转到每个注册的提供商,并向用户显示匹配的内容根。
  •   

示例内容提供程序的定义如下:

    <provider
        android:name="com.example.android.storageprovider.MyCloudProvider"
        ...
        android:enabled="@bool/atLeastKitKat">
        <intent-filter>
            <action android:name="android.content.action.DOCUMENTS_PROVIDER" />
        </intent-filter>
    </provider>

这是迄今为止我见过的Intent-to-Content-Provider匹配的唯一例子。

实际上,我不认为内容提供商之前可以定义意图过滤器,但我可能会弄错。