English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Spiegazione dettagliata dell'accesso allo spazio di archiviazione esterno in Android 4.4 e codice di esempio

Android4.4  Accesso allo storage esterno

Nel sistema Android 4.4, la scheda SD esterna (SD card) è chiamata dispositivo di storage esterno di secondo livello (secondary storage), le applicazioni non possono scrivere dati sulla scheda SD esterna (SD card) e WRITE_EXTERNAL_STORAGE è solo concesso i permessi di scrittura sullo storage esterno principale (primary storage), per altri storage esterni, le proprietà dei file sono modificate basate sulla struttura delle cartelle, l'applicazione non deve ottenere il permesso WRITE_EXTERNAL_STORAGE, ma può gestire le cartelle correlate al proprio nome del pacchetto. Per esempio, se il nome del pacchetto dell'applicazione è com.example.externalstorage, la directory Android/data/com.example.externalstorage/ dello storage esterno è sua, può accedervi liberamente senza permessi. Inoltre, è necessario prestare attenzione in particolare che quando l'applicazione viene disinstallata, le cartelle e i dati creati sulla scheda SD vengono eliminati completamente insieme.

Eccezione, in Android 4.4, le applicazioni di sistema (quelle con firma platform o preinstallate nella directory /system/priv-app) possono ottenere i permessi di scrittura e lettura completa sulla scheda SD utilizzando il permesso WRITE_MEDIA_STORAGE.

Android 4.4 ha aggiunto le seguenti funzioni per accedere allo storage esterno:

 Context.getExternalFilesDirs(null), restituisce più directory di files dell'area dati privata dell'applicazione su più schede SD

/storage/sdcard0/Android/data/<package_name>/files

/storage/sdcard1/Android/data/<package_name>/files

Context.getExternalCacheDirs(), restituisce più directory di cache private del database dell'applicazione su più schede SD

/storage/sdcard0/Android/data/<nome_pacchetto>/caches

/storage/sdcard1/Android/data/<nome_pacchetto>/caches

Context.getObbDirs(), restituisce più directory private sotto le schede SD obb (solitamente la directory dei pacchetti di dati dei giochi)

/storage/sdcard0/Android/obb/<nome_pacchetto>

/storage/sdcard1/Android/obb/<nome_pacchetto>

Il funzionamento della funzione sopra riportata è corretto nel mio sistema Android 5.1, ma nel sistema Android 4.4 può vedere solo il percorso della memoria interna.

 
   
 

Secondo le informazioni trovate online, dopo Android 4.4 è possibile gestire la scheda SD modificando i file di sistema, come segue:

1<permission name="android.permission.WRITE_EXTERNAL_STORAGE" >
2     <group gid="sdcard_r" />
3     <group gid="sdcard_rw" />
4     <group gid="media_rw" />
5   </permission>

Modificare il nodo android.permission.WRITE_EXTERNAL_STORAGE del file /system/etc/permissions/platform.xml, aggiungere <group gid="media_rw" /> (richiede permessi di root).

Dopo la modifica, applicare può controllare liberamente la scheda SD.

Grazie per la lettura, spero che possa aiutare tutti, grazie per il supporto al nostro sito!

Ti potrebbe interessare