5

В http://developer.android.com/guide/topics/providers/document-provider.html#manifest показан, как зарегистрировать пользовательский поставщик документа в манифесте:Android: «Фильтр намерений элемента здесь запрещен» внутри <provider>?

<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> 

Это < намерение фильтра > элемента необходим здесь, но Android-студия жалуется:

элемент умысла -filter не допускается здесь

и the documentation for the provider element, кажется, указывает так же:

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

Является ли это студией Android и ошибкой документации или я что-то упускаю?

+0

Сообщил как ошибка в: https://code.google.com/p/android/issues/detail?id=218872 – fornwall

+0

Я снялся отчет об ошибке, но история показывает, что, скорее всего, будут проигнорированы. Только часть ошибок, поданных на Android, когда-либо получали официальный комментарий, не говоря уже об исправлении. –

ответ

4

Вы ничего не пропустили; Android Studio и документация неверны. Провайдеры могут быть обнаружены путем сопоставления целей, как и любой другой компонент.

Android находит поставщиков документов, используя такой код:

Намерение я = новый Intent (DocumentsContract.PROVIDER_INTERFACE);

Список < ResolveInfo> providers = packageManager.queryIntentContentProviders (i, 0);