Codice Android 3.2+ (inavvertitamente?) che impedisce l'accesso in scrittura alla memoria esterna

Sembrerebbe che Google abbia un bug nel codice AOSP introdotto attorno ad Android 3.2, che influisce sul modo in cui il sistema operativo gestisce l'archiviazione USB e può impedire l'accesso in scrittura a schede SD e chiavette USB. Sviluppatore riconosciuto XDA Elite, moderatore senior e Scrittore di notizieCatena di fuoco riassume la questione nel suo post sul blog:

In passato, un'app richiedeva il "SCRIVERE_ARCHIVIAZIONE_ESTERNA" autorizzazione, che garantirebbe l'accesso in scrittura a Tutto archivi esterni (utente/gruppo "sdcard_rw"). Apparentemente questo è stato modificato per garantire solo l'accesso in scrittura al file primario archiviazione esterna. È stata introdotta una seconda autorizzazione denominata "WRITE_MEDIA_STORAGE", che garantirebbe l'accesso agli altri archivi esterni (utente/gruppo "media_rw").

Il problema è che questa autorizzazione non verrà effettivamente concessa a terzi, ma solo alle app di sistema e alle app fornite dal produttore del dispositivo. Ci sono delle eccezioni, a quanto pare su alcuni dispositivi alle app di terze parti verrà concessa questa autorizzazione, ma secondo le fonti AOSP di certo non dovrebbero.

Mentre Chainfire indagava sul problema, si imbatté nel codice nel file /system/vold/Volume.cpp che afferma esplicitamente:

 se (archiviazione primaria) {

// Caso speciale il scheda SD primaria.

// Per questo concediamo l'accesso in scrittura al gruppo SDCARD_RW.

gid = AID_SDCARD_RW;

} altro {

// Per l'archiviazione esterna secondaria manteniamo le cose bloccate.

gid = AID_MEDIA_RW;

}

Su molti dispositivi, la memoria flash interna è considerata la "scheda SD primaria". IL vero La scheda SD diventa quindi la memoria esterna secondaria e viene bloccata, protetta dall'irraggiungibile "WRITE_MEDIA_STORAGE" autorizzazione.

Chainfire ha presentato la sua domanda al Orari di ufficio degli sviluppatori Android squadra, e hanno finito per discuterne nella loro ritrovo dal vivo l'11 aprile. Sfortunatamente, gli ingegneri di Google presenti nell'hangout non sono stati in grado di fornire alcuna risposta reale, poiché si tratta di una questione complicata e la domanda è stata sollevata solo un'ora prima che lo spettacolo andasse in diretta. Hanno comunque promesso di andare a fondo della questione e di tornare su Chainfire (e su di noi) in un secondo momento.

Sempre secondo Chainfire, il problema è in realtà presente anche sulle build ICS per SGS2, sebbene Samsung "ho risolto il problema utilizzando un brutto trucco per i permessi":

Quello che vedi qui è Samsung sulle spalle l'autorizzazione WRITE_MEDIA_STORAGE all'autorizzazione WRITE_EXTERNAL_STORAGE, quindi le app non riscontrano il problema descritto.

Resta da vedere se Google intendesse o meno limitare le schede SD e le chiavette USB collegate alla sola lettura per le app di terze parti. Tuttavia fa nascere un pensiero inquietante: e se il codice e le note di accompagnamento fossero i primi di Google? fasi di implementazione di una sorta di protezione da scrittura per l'archiviazione esterna, limitando così ulteriormente il nostro cellulare libertà? Possiamo solo sperare che si tratti di un vero bug, poiché la libertà è uno dei motivi per cui tutti evitiamo il Lato oscuro.

[Un enorme ringraziamento a Chainfire per l'avviso e l'aiuto!]