7

Sto sviluppando un composto personalizzato Vista che deve accedere all'archiviazione esterna. Come posso implementare la gestione delle autorizzazioni senza coinvolgere soggetti esterni, ad esempio Attività o Frammento?Come gestire le richieste di autorizzazione al di fuori di Attività e Frammento?

Ottengo che posso richiedere le autorizzazioni utilizzando il contesto della vista, ma come posso gestire onRequestPermissionsResult() all'interno della visualizzazione? È possibile?

Se non è possibile, quale sarebbe la soluzione più elegante per gestire qualcosa di simile?

risposta

5

sto sviluppando un composto visualizzazione personalizzata che ha bisogno di accedere a storage esterno

IMHO, questo è un bug di architettura. Un View è per la visualizzazione di materiale per l'utente e talvolta per la raccolta di eventi di input di basso livello e per trasformarli in costrutti di ordine superiore (ad es. Clic, scorrimento). A View non dovrebbe avere alcuna connessione a file, database, ecc. Vedere MVC, MVP, MVVM e modelli di architettura GUI simili.

WebView, che non rispetta questo, causa problemi (ad esempio, esecuzione di I/O del disco sul thread dell'applicazione principale) come risultato.

Come posso implementare la gestione delle autorizzazioni senza coinvolgere soggetti esterni, ad esempio Attività o Frammento?

Non è possibile. È responsabilità dell'attività o del frammento richiedere l'autorizzazione, presumibilmente prima che la tua vista abbia bisogno di questi dati.

quale sarebbe la soluzione più elegante per gestire qualcosa di simile?

Estrarre la parte di accesso ai dati di questo View in qualcos'altro che è gestito dalla attività o frammento, dove la filettatura, i permessi, e altri lavori associati a tale accesso ai dati possono essere gestiti.

-1

È possibile solo in Attività e Frammenti.

Quello che puoi fare è copiare public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) nella tua vista e chiamare quel metodo nel corrispondente nell'attività o nel frammento in cui si trova il contesto.

Problemi correlati