Android:&#34;此处不允许使用元素intent-filter&#34;在<provider>里面?

时间:2016-04-22 01:20:07

标签: android android-studio android-manifest android-xml storage-access-framework

http://developer.android.com/guide/topics/providers/document-provider.html#manifest处显示了如何在清单中注册自定义文档提供程序:

<manifest... >
    ...
    <uses-sdk
        android:minSdkVersion="19"
        android:targetSdkVersion="19" />
        ....
        <provider
            android:name="com.example.android.storageprovider.MyCloudProvider"
            android:authorities="com.example.android.storageprovider.documents"
            android:grantUriPermissions="true"
            android:exported="true"
            android:permission="android.permission.MANAGE_DOCUMENTS"
            android:enabled="@bool/atLeastKitKat">
            <intent-filter>
                <action android:name="android.content.action.DOCUMENTS_PROVIDER" />
            </intent-filter>
        </provider>
    </application>

</manifest>

此&lt; intent-filter&gt;元素在这里是必要的,但Android Studio抱怨:

  

此处不允许使用元素intent-filter

the documentation for the provider element似乎也表明了这一点:

CAN CONTAIN:
<meta-data> 
<grant-uri-permission> 
<path-permission>

这是Android Studio和文档错误还是我错过了什么?

1 个答案:

答案 0 :(得分:4)

你不会遗漏任何东西; Android Studio和文档不正确。提供者通过意图匹配进行发现,就像任何其他组件一样。

Android使用以下代码查找文档提供程序:

  

意图i =新意图(DocumentsContract.PROVIDER_INTERFACE);

     

列表与LT; ResolveInfo&GT; providers = packageManager.queryIntentContentProviders(i,0);