2015-12-26 7 views
6

Nella mia app per Android, ho salvato alcuni file nella directory Environment.getExternalStorageDirectory() + "\MyApp". Questo ha funzionato bene fino ad Android 6 aggiornamento marshmallow. Dopo l'aggiornamento marshmallow, non riesco a scrivere in questa directory.È necessario il controllo dell'autorizzazione di runtime per scrivere nel percorso getExternalFilesDir() in marshmallow?

Come descritto nella risposta this, in marshmallow, le app devono richiedere l'autorizzazione dell'utente in fase di esecuzione prima di scrivere su una memoria esterna.

Ma, quando uso context.getExternalFilesDir(null) invece di Environment.getExternalStorageDirectory(), non ho bisogno di chiedere alcuna autorizzazione in fase di esecuzione e funziona solo (percorso restituito da context.getExternalFilesDir(null) è anche all'interno della directory di archiviazione esterna).

È una specie di coincidenza o posso continuare a scrivere su context.getExternalFilesDir(null) senza chiedere il permesso in fase di runtime?

+0

Sei davvero in grado di scrivere file su storage esterno senza autorizzazione su Android 6? –

risposta

8

I documentation stati:

A partire dal KITKAT, nessuna autorizzazione sono tenuti a leggere o scrivere il percorso restituito; è sempre accessibile all'app chiamante. Questo si applica solo ai percorsi generati per il nome del pacchetto dell'applicazione chiamata. Per accedere ai percorsi appartenenti ad altri pacchetti, sono richiesti WRITE_EXTERNAL_STORAGE e/o READ_EXTERNAL_STORAGE.

Avrete accesso in lettura/scrittura a getExternalFilesDir() su Android 4.4+ senza richiedere alcuna autorizzazione.

Si consiglia di utilizzare FileProvider se è necessario supportare livelli API inferiori.

+0

Se sto puntando all'API 25, ma supportando fino all'API 16, devo ancora dichiarare l'autorizzazione 'WRITE_EXTERNAL_STORAGE' nel Manifest e quindi non chiedere il permesso al runtime? – ankushg

0

ne so le autorizzazioni vengono presentati iniziato dal Android 6 e sopra Quindi nessun bisogno di controllare le autorizzazioni per l'API 16

Problemi correlati