Код на Android 3.2+ (по невнимание?), предотвратяващ достъпа за запис до външно хранилище

Изглежда, че Google има грешка в техния AOSP код, който беше въведен около Android 3.2, който засяга начина, по който операционната система обработва USB съхранението и може да предотврати достъпа за запис на SD карти и USB памети. XDA Elite признат разработчик, старши модератор и Писател на новиниВерижен огън обобщава въпроса в своя блог пост:

В миналото приложение изискваше „WRITE_EXTERNAL_STORAGE" разрешение, което би предоставило достъп за писане на всичко външни хранилища (потребител/група "sdcard_rw"). Това очевидно е променено, за да предоставя само достъп за запис на първичен външно хранилище. Въведено е второ разрешение, наречено "WRITE_MEDIA_STORAGE", което би предоставило достъп до другите външни хранилища (потребител/група "media_rw").

Проблемът е, че трета страна всъщност няма да получи това разрешение, само системни приложения и приложения, предоставени от производителя на устройството, обикновено ще получат това разрешение. Има изключения, очевидно на някои устройства приложенията на трети страни ще получат това разрешение, но според източниците на AOSP те със сигурност не трябва да го правят.

Докато Chainfire проучваше проблема, той се натъкна на код в /system/vold/Volume.cpp което изрично посочва:

 if (primaryStorage) {

// Специален случай the основна SD карта.

// За това предоставяме достъп за запис на групата SDCARD_RW.

gid = AID_SDCARD_RW;

} иначе {

// За вторично външно хранилище ние държим нещата заключени.

gid = AID_MEDIA_RW;

}

На много устройства вътрешната светкавица се счита за „основна SD карта“. The истински След това SD картата става второстепенно външно хранилище и се заключва, защитена от недостижимия "WRITE_MEDIA_STORAGE" разрешение.

Chainfire изпрати въпроса си до Работно време на разработчиците на Android екип и те накрая го обсъдиха в своя терен на живо на 11 април. За съжаление, инженерите на Google, присъстващи в терена, не успяха да дадат реални отговори, тъй като това е сложен проблем и въпросът беше повдигнат само час преди предаването да започне на живо. Те обаче обещаха да стигнат до дъното на този проблем и да се върнат към Chainfire (и нас) по-късно.

Също така според Chainfire, проблемът всъщност присъства и в ICS компилациите за SGS2, въпреки че Samsung "заобиколи го, използвайки много грозен хак за разрешение":

Това, което виждате тук, е Samsung пиггибекинг разрешението WRITE_MEDIA_STORAGE към разрешението WRITE_EXTERNAL_STORAGE, така че приложенията да не изпитват описания проблем.

Остава да разберем дали Google е възнамерявал свързаните SD карти и USB памети да бъдат ограничени само за четене за приложения на трети страни. Това обаче поражда смущаваща мисъл: Ами ако кодът и придружаващите бележки са първите на Google етапи на прилагане на някакъв вид защита срещу запис за външно хранилище и по този начин допълнително ограничаване на нашия мобилен телефон свобода? Можем само да се надяваме, че това е истински бъг, тъй като свободата е една от причините, поради които всички я избягваме Тъмна страна.

[Огромни благодарности на Chainfire за вниманието и помощта!]