5

A http://developer.android.com/guide/topics/providers/document-provider.html#manifest si mostra come registrare un fornitore di documento personalizzato nel manifesto:Android: "Elemento-filtro dell'elemento non è consentito qui" all'interno di <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> 

Questo < intent-filtro > elemento è necessaria qui, ma Android Studio lamenta con:

Element intento -filter non è permesso qui

e the documentation for the provider element sembra indicare in modo così:

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

Si tratta di un bug di Studio e documentazione Android o mi manca qualcosa?

+0

segnalato come un bug a: https://code.google.com/p/android/issues/detail?id=218872 – fornwall

+0

recitai la tua segnalazione di bug, ma la storia suggerisce che è probabile che essere ignorato. Solo una piccola parte degli errori registrati su Android ottiene sempre un commento ufficiale e tanto meno una correzione. –

risposta

4

Non ti manca nulla; Android Studio e la documentazione non sono corretti. I provider sono soggetti alla scoperta attraverso la corrispondenza degli intenti, proprio come qualsiasi altro componente.

Android trova fornitori di documenti utilizzando il codice come questo:

Intento i = new Intent (DocumentsContract.PROVIDER_INTERFACE);

Elenco < ResolveInfo> provider = packageManager.queryIntentContentProviders (i, 0);