9

SFONDOIn che modo l'applicazione del provider di contenuti specifica le autorizzazioni necessarie alle app client per accedere ai dati del provider?

Sto leggendo this tutorial on Android Content Providers. Da questo tutorial ho compreso che,

Per consentire ad altre applicazioni di accedere ai dati di un provider di contenuti, l'applicazione del provider deve specificare le autorizzazioni che le applicazioni client devono avere per accedere ai dati del proprio provider.

Le applicazioni client specificano le autorizzazioni richieste nel file manifest utilizzando l'elemento <uses-permission>, ad es.

<uses-permission android:name="android.permission.READ_USER_DICTIONARY" > <!-- In the client app's manifest --> 

Poi il manager APK chiede il consenso dell'utente su queste autorizzazioni (in app client) quando l'utente installa l'applicazione client.

DOMANDA

La mia domanda è che come fa il provider (app) specificare le autorizzazioni che altre applicazioni client devono essere concessi per consentire loro di accedere ai dati del provider?

Dal developer guide,

per trovare il nome esatto del permesso di accesso in lettura per il provider si sta utilizzando, così come i nomi per altre autorizzazioni di accesso utilizzati dal provider, guarda nella documentazione del provider.

Così è che il modo di specificare le autorizzazioni in app fornitore - nella documentazione del provider? In tal caso, dove viene trovata la documentazione? Dove posso trovare quella documentazione per il provider SearchableDictionary (usata come esempio nel tutorial), e se scrivo un fornitore di contenuti nella mia app, dove devo fornire tale documentazione?

risposta

13

Definire permesso in AndroidManifest.xml fornitore di app

<permission 
    android:name="com.myapp.PERMISSION"/> 

Definire Provider in AndroidManifest.xml fornitore di app

<provider 
     android:name=".MyProvider" 
     android:authorities="com.myapp.MyProvider.AUTHORITY" 
     android:enabled="true" 
     android:exported="true" 
     android:multiprocess="true" 
     android:readPermission="com.myapp.PERMISSION" /> 

AndroidManifest.xml del cliente dovrebbe avere tag usi-permesso

<uses-permission android:name="com.myapp.PERMISSION"/> 

Quindi il client può accedere al provider

Cursor cursor = getContentResolver().query(
Uri.parse("content://com.myapp.MyProvider.AUTHORITY/xxx"),null, null, null, null); 
+0

Grazie mille per una risposta molto chiara. Ma sono ancora un po 'confuso circa la citazione che ho citato dalla guida per sviluppatori sulla documentazione * provider *: di quale documentazione stanno parlando? Hai qualche idea? – Solace

+0

Ma ora sono sicuro di poter esaminare il manifest di un'applicazione del provider per conoscere il nome dell'autorizzazione. Quindi grazie. – Solace

+0

@Solace ho avuto esattamente il tuo problema, puoi dirmi dove hai trovato in questo esempio il file manifest di UserDictionary ??? –

Problemi correlati