5

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>

この <intent-filter> 要素はここで必要ですが、Android Studio は次のように文句を言います:

要素インテント フィルターはここでは許可されていません

また、プロバイダ要素のドキュメントも同様に示しているようです:

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

これは Android Studio とドキュメントのバグですか、それとも何か不足していますか?

4

1 に答える 1

5

あなたは何も見逃していません。Android Studio とドキュメントが正しくありません。プロバイダーは、他のコンポーネントと同様に、インテント マッチングを通じて検出されます。

Android は、次のようなコードを使用してドキュメント プロバイダーを見つけます。

Intent i = new Intent( DocumentsContract.PROVIDER_INTERFACE );

List<ResolveInfo> providers = packageManager.queryIntentContentProviders (i, 0);

于 2016-09-09T07:13:24.330 に答える