Cod Android 3.2+ (din neatenție?) Împiedică accesul la scriere la stocarea externă

S-ar părea că Google are o eroare în codul AOSP care a fost introdus în jurul Android 3.2, care afectează modul în care sistemul de operare gestionează stocarea USB și poate împiedica accesul la scriere la cardurile SD și stick-urile USB. Dezvoltator recunoscut XDA Elite, moderator senior și Scriitor de știriLanț de foc rezumă problema în a lui postare pe blog:

În trecut, o aplicație solicita „WRITE_EXTERNAL_STORAGE", care ar acorda acces de scriere la toate stocări externe (utilizator/grup "sdcard_rw"). Se pare că acest lucru a fost modificat pentru a acorda doar acces de scriere la primar stocare externă. A fost introdusă o a doua permisiune numită „WRITE_MEDIA_STORAGE", care ar acorda acces la celelalte stocări externe (utilizator/grup "media_rw").

Problema este că unei terțe părți nu i se va acorda de fapt această permisiune, doar aplicațiile de sistem și aplicațiile furnizate de producătorul dispozitivului vor primi în mod normal această permisiune. Există excepții, se pare că pe unele dispozitive aplicațiile terțe vor primi această permisiune, dar conform surselor AOSP, cu siguranță nu ar trebui să o facă.

În timp ce Chainfire a investigat problema, a dat peste cod în /system/vold/Volume.cpp care afirmă în mod explicit:

 if (primaryStorage) {

// Caz special the cardul SD primar.

// Pentru aceasta, acordăm acces de scriere grupului SDCARD_RW.

gid = AID_SDCARD_RW;

} altfel {

// Pentru stocarea externă secundară păstrăm lucrurile blocate.

gid = AID_MEDIA_RW;

}

Pe multe dispozitive, blițul intern este considerat „cardul SD principal”. The real Cardul SD devine apoi spațiul de stocare extern secundar și este blocat protejat de elementele de neatins "WRITE_MEDIA_STORAGE"permisiune.

Chainfire a trimis întrebarea lui Program de lucru pentru dezvoltatori Android echipa și au ajuns să discute despre asta în cadrul lor Hangout live pe 11 aprilie. Din păcate, inginerii Google prezenți în hangout nu au fost capabili să ofere niciun răspuns real, deoarece aceasta este o problemă complicată și întrebarea a fost ridicată cu doar o oră înainte de difuzarea emisiunii. Cu toate acestea, au promis că vor ajunge la fundul acestei probleme și vor reveni la Chainfire (și la noi) mai târziu.

De asemenea, potrivit Chainfire, problema este de fapt prezentă și pe versiunile ICS pentru SGS2, deși Samsung "am rezolvat-o folosind un hack de permisiuni foarte urât":

Ceea ce vezi aici este Samsung piggybacking permisiunea WRITE_MEDIA_STORAGE la permisiunea WRITE_EXTERNAL_STORAGE, astfel încât aplicațiile nu se confruntă cu problema descrisă.

Rămâne de văzut dacă Google intenționează sau nu ca cardurile SD și stick-urile USB conectate să fie limitate pentru a fi doar în citire pentru aplicațiile terțe. Totuși, dă naștere unui gând tulburător: ce se întâmplă dacă codul și notele însoțitoare sunt primele de la Google etapele implementării unui fel de protecție la scriere pentru stocarea externă și, astfel, limitând și mai mult mobilul nostru libertate? Putem doar să sperăm că acesta este un bug autentic, deoarece libertatea este unul dintre motivele pentru care evităm cu toții Partea întunecată.

[Mulțumiri imense lui Chainfire pentru atenție și ajutor!]