Android копіює не на зовнішню картку. Оновлення на Android Lollipop та особливості роботи із зовнішньою картою пам'яті

Розробляючи програму для проведення змагань, я зіштовхнувся з проблемою зберігання бази даних. Проблема в тому, як мені визначити зовнішню карту пам'яті. Загалом пошук у мережі точної відповіді не дав. Тому, поєднавши всі знайдені результати, я зібрав свій клас. Якщо комусь цікаво, дивимося під катом.

Отже, почнемо з теорії.

Термінологія

Google нам каже, що є такі поняття:
  1. Внутрішня ( internal) пам'ять - це частина вбудованої в телефон картки пам'яті. У разі використання за промовчанням папка програми захищена від доступу інших програм (Using the Internal Storage).
  2. Зовнішня ( external) пам'ять - це загальне «зовнішнє сховище», тобто. це може бути як частина вбудованої пам'яті, так і пристрій, що видаляється. Зазвичай це частина вбудованої пам'яті, як пристрій, що видаляється, я бачив востаннє на андройді 2.2, де вбудована пам'ять була близько 2Гб, і пам'ять, що підключається, ставала зовнішньою (Using the External Storage).
  3. Видалена ( removable) пам'ять - всі сховища, які можуть бути видалені з пристрою без хірургічних втручань.

До версії KitKat 4.4 API не надавало функціоналу для отримання шляхів зовнішньої пам'яті. Починаючи з цієї версії (API 19), з'явилася функція public abstract File getExternalFilesDirs(String type), яка повертає масив рядків із шляхами до внутрішньої та зовнішньої пам'яті. Але як бути з нашою SD Card, яка вставлена ​​в слот? Шлях до неї ми знову не можемо отримати.

Результати пошуку

Щоб відповісти на поставлене запитання, я звернувся до всезнаючого гугла. Але й він мені не дав чіткої відповіді. Було розглянуто безліч варіантів визначення від використання стандартних функцій, які ведуть до зовнішньої пам'яті, але нічого спільного з пристроями зберігання даних, що видаляються, вони не мають, до обробки правил монтування пристроїв (Android ж на ядрі Linux працює). В останніх випадках були використані «зашиті» шляхи до папки з примонтованими пристроями (у різних версіях ця директорія є різною). Не слід забувати, що від версії до версії правила монтування змінюються.

Зрештою я вирішив об'єднати всі отримані знання і написав свій клас, який може нам повернути шляхи до зовнішніх та видалених пристроїв.

Опис коду

Було створено клас MountDevice, який містить шлях до пристрою, тип пристрою і якийсь хеш.
Типів пристроїв виділено два ( внутрішню пам'ятья не став чіпати, так як доступ до неї можна отримати через API системи).

Public enum MountDeviceType ( EXTERNAL_SD_CARD, REMOVABLE_SD_CARD )
І було створено клас StorageHelper, який і здійснює пошук доступних картпам'яті.

У класі StorageHelper реалізовано два способи пошуку – через системне оточення ( Environment) та з використанням утиліти Linux mount, А точніше результату її виконання.

Спосіб перший - Environment
При роботі з оточенням я використовую стандартну функцію getExternalStorageDirectory() для отримання інформації про зовнішню пам'ять. Щоб отримати інформацію про пам'ять, що видаляється, я використовую змінну оточення " SECONDARY_STORAGE".

Зовнішня пам'ятьзавжди одна і зазвичай завжди є, тому перевіряємо її на читання, обчислюємо хеш і запам'ятовуємо. Пам'яті, що видаляється, може бути багато, тому необхідно отриманий рядок розбити по роздільнику і перевіряти кожне значення.

Функція fillDevicesEnvirement

String path = android.os.Environment.getExternalStorageDirectory() .getAbsolutePath(); if (!path.trim().isEmpty() && android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) ( testAndAdd(path, MountDeviceType.EXTERNAL_SD_CARD); ) // Отримуємо рем rawSecondaryStoragesStr = System.getenv("SECONDARY_STORAGE"); if (rawSecondaryStoragesStr != null && !rawSecondaryStoragesStr.isEmpty()) ( // All Secondary SD-CARDs splited in array final String rawSecondaryStorages = rawSecondaryStoragesStr .split (File MountDeviceType.REMOVABLE_SD_CARD);))


Варіант рішення взято зі stackoverflow. Відповідь десь там унизу.
Спосіб другий - mount
Так як у мене довго не виходило змусити систему мені сказати шлях до пам'яті, що видаляється, я вирішив шукати в бік примонтованих пристроїв. У системі є файли конфігурації, в яких описано правила монтування зовнішніх пристроїв. Все б добре, але на Android версії 4.* до цього файлу простим смертним доступом немає, тому розглядати цей спосіб не буду.

Повернемося до утиліти mount. При запуску без параметрів команда повертає перелік змонтованих файлових систем. Пристрої, що видаляються, зазвичай формат файлової системи FAT, то будемо виділяти рядки, в яких є характеристика " fat". Зовнішня пам'ять характеризуватиметься параметром " fuse".

Примітка: при використанні такого способу не завжди коректно (швидше за все, я щось не врахував) визначаються типи змонтованих пристроїв. Різницю помічав на різних версіях Android. Тому цей спосіб можна використати як додатковий.

Функція fillDevicesProcess

try ( Runtime runtime = Runtime.getRuntime(); proc = runtime.exec("mount"); try ( is = proc.getInputStream(); isr = new InputStreamReader(is); br = new BufferedReader(isr); while ( (line = br.readLine()) != null) ( if (line.contains("secure")) continue; if (line.contains("asec")) continue; if (line.contains("fat") ) (// TF card String columns = line.split(" "); if (columns != null && columns.length > 1) ( testAndAdd(columns, MountDeviceType.REMOVABLE_SD_CARD); ) ) else if (line.contains(" fuse")) (// internal(External) // storage String columns = line.split(" "); if (columns != null && columns.length > 1) ( // mount = mount.concat(columns + " \n"); testAndAdd(columns, MountDeviceType.EXTERNAL_SD_CARD); ) ) ) ) finally ( ... ) ) catch (Exception e) ( ... )

Вихідний код всього класу розташований ще ніде. Днями спробую розмістити на gitHub.

Хто ще якими способами користується?

Теги: Додати теги

Здійснилося! На планшет, а саме, на Asus MeMO Pad 7, який я заміню своєму чесному трудязі, прилетіло оновлення до Android 5.0.1. Тепер у мене є пристрій із Льодяником, або, як пишуть в інтернеті, з Лоліпопою.


Знову прилетіла дещо несподівано. Якщо чесно, я чекав у квітні нову прошивкуна телефон ( Asus ZenFone 5) - її, принаймні, обіцяли. Про планшет ніхто нічого не говорив і тут - на тобі, отримайте і розпишіться.

Це, насправді, збентежило мене (у хорошому, звичайно, сенсі), ще й тому, що планшет я придбав у грудні, і на ньому стояла версія 4.3. Тобто, це другий суттєвий апдейт операційної системи(насправді, обнов було більше, але номер версії Android не змінювався). Попередній виробник моїх пристроїв - Samsung - не міг похвалитися такою скорострільністю, хоча теж двічі оновлював операційну систему: з Android 3.2 до Android 4.1.2 (через 4.0.1). Тільки чекати цих нових версій доводилося значно довше.

Що ж, нехай живуть сюрпризи! Отримавши повідомлення про вихід нової версіїпрошивки, я відразу скачав її, а це більше 700 метрів, і запустив оновлення. Оскільки качав я не через домашню мережу, А через мобільну, то часу на все потрібно було трохи більше: від початку завантаження до завершення оновлення пройшло близько години. Саме оновлення тривало десь хвилин двадцять, але, потенційно, може тривати й більше часу - тому, що після встановлення операційної системи слід процес оновлення встановлених програм. У мене лічильник дорахував до 205. Але процес завершився і настав час подивитися, що ж змінилося.

Перше, що кинулося у вічі - більш витончена графіка при розблокуванні пристрою. Друге - рука в області сповіщень. Кілька днів я її терпів, сподіваючись, що випадково де-небудь побачу що-небудь, пов'язане з нею. Не побачив. Тоді став шукати цілеспрямовано і знайшов роз'яснення щодо неї на 4pda. Виявляється, оповіщення поділили на важливі і не дуже, і є можливість вказати, які оповіщення ви хочете отримати. Якщо виставити опцію Сповіщати завжди , то рука пропадає, якщо опцію Тільки важливі оповіщення то рука з'являється. Якщо чесно, руку я прибирав кілька разів, але чомусь вона стабільно повертається. Чому? Поки не знаю.

Ось, власне, сама процедура по "прибиранню" цієї руки:

Метод, наведений вище, не складний. Але можна досягти результату ще швидше і простіше: натиснути на якусь із двох кнопок керування гучністю - на екрані з'явиться віконце, що дозволяє змінювати рівні гучності для різних компонентів системи, а також, увага, керувати Режимами оповіщення . Щоправда, чомусь, ці самі Режими оповіщення виводяться у такому швидкому варіанті який завжди. Закономірності я поки не знайшов, але, якщо чесно, не боляче і шукав.

Декілька слів про встановлених програмах. Хоча перед початком процесу оновлення у мене висвітлилося попередження про те, що деякі програми будуть видалені, тому що не входять до нової прошивки, проте більшість програм збереглася.


Єдине, чого мені трохи шкода, це програма з нетиповою назвою "Два програми". Хоча, зізнатися, я навіть не відразу зрозумів, про що мова: думав, які дві програми будуть видалені, невже назви не можна було вказати.

Так, програма, що з'явилася у версії 4.4.2 і дозволяла поділити екран між двома програмами, що одночасно працюють, канула в небуття. Правду кажучи, її функціонал був досить слабенький, тому що можна було запускати одночасно дуже обмежене коло додатків. Якщо мені не зраджує пам'ять, я користувався нею лише один або два рази, просто щоб подивитися, що це таке. Можливо, комусь не вистачатиме можливостей, що надаються цією програмою, але я, якось, не дуже засмутився. Хоча, звичайно, не дуже люблю, коли в мене забирають те, що дали раніше.

Ще кілька зауважень з приводу програм. Після того, як я перебрався на новий планшетя деякий час встановлював на ньому програми, якими користувався на попередньому своєму пристрої. Деякі з них доводилося, але зараз не про них. Йдеться про ті програми, у поведінці яких щось змінилося. Звичайно, я встиг спробувати ще не все, але ось що виявилося на даний момент.

На KitKat-і у мене рішуче не працював TuniIn Radio Pro, куплений, між іншим. Все йшло гладко - до того моменту, поки черга не доходила безпосередньо до прослуховування будь-якої радіостанції. Тобто програма запускалася, я вибирав групу радіостанцій, наприклад, Локальні радіостанції, вибирав конкретну станцію (наприклад, RockFM, Радіо Джаз, та взагалі будь-яку станцію) після чого програма валилася з помилкою. Іноді навіть з'являвся звук, але програма все одно падала. Час минав, виходили оновлення TuneIn Radio, але нічого не змінювалося. Однак після оновлення до п'ятірки проблеми чарівним чином зникли, тепер все працює без найменших нарікань.

Ще одна позитивна зміна – офісний пакет SoftMaker Office HD, теж чесно придбаний. Програми, що входять до нього, нормально працювали на самсунгівському планшеті. Коли я встановив ці програми на новий планшет, вони не запускалися взагалі. Через деякий час вийшло оновлення для цього офісу і положення дещо виправилося: програми стали запускатися, щоправда, у процесі роботи, в області меню (верхній рядок програмного вікна), накопичувалися якісь дивні графічні артефакти. При перемиканні на робочий стіл (або інший додаток) і назад артефакти пропадали, але ненадовго. Після оновлення Android-авсі програми, що входять у пакет, працюють як годинник.

Та й невеликий негативний момент. Я користуюся, дуже активно, програмою під назвою Відеореєстратор. За неї я теж гроші віддав. Програма нормально працювала на новому планшеті, жодних нарікань плюс працювали функції, які були недоступні на попередньому планшеті, наприклад, стабілізація відео. Після оновлення операційної системи програма при старті запису стала стабільно падати. Спочатку, я думав, що виникли якісь проблеми із записом на карту пам'яті – у мене налаштований запис у каталог програми на зовнішній MicroSD картці. Але після того, як я в самій програмі зміг створити підкаталог у каталозі запису, стало зрозуміло, що використання зовнішньої картки ні до чого. Тоді я вирішив відключати по одній функції програми, і перше, чого торкнувся палець, був checkbox із галкою стабілізації. Після вимкнення опції програма стала писати відео, але його якість впала. Ні, дозвіл і швидкість потоку - все залишилося тим самим, але картинка на записі попливла хвилями. У програмі є налаштування, яке намагається згладити цей ефект, і, в принципі, її включення трохи допомагає, але, чомусь, при повторному вході в програму, сама позначка, що опція включена, залишається, але картинка пливе, наче опція вимкнена . Якщо тицьнути у вже включену опцію, все відразу нормалізується. Швидше за все це помилка в програмі, я збираюся повідомити про неї розробнику і, можливо, автор виправить цей глюк. Але те, що не працює відеостабілізація, трохи напружує. Насамперед тому, що штатна програма камери має в налаштуваннях опцію стабілізації і, при її включенні, запис ведеться без помилок.

Від окремих випадків, пов'язаних з програмами, перейду до більш загальних властивостей системи. Ну, по-перше, зросла кількість вільної пам'яті. Як я вже писав, весь мій софт залишився на місці. При цьому, мушу сказати, що я досить сильно напружую планшет. Не в плані того, що постійно ганяю в ігри, а в плані того, що в мене висить маса сервісів, частиною яких я, може, і не користуюся, але тримаю про всяк випадок. Йдеться, перш за все, про всіляких поштовиків - Outlook, Yandex Mail, GMail, точніше, зараз вже Inbox. Далі, різноманітні хмарні сховища- Yandex Disk, OneDrive, Google Drive, Dropbox, Box, Asus WebStorage. Парочка соціальних мереж- Однокласники та Google+. Ще всілякі месенджери – Viber, ICQ, Skype, Hangouts. Всі ці програми так чи інакше віджирають пам'ять пристрою, навіть коли ними не користуєшся. Але я, в принципі, розумію, на що йду.

Користувачі асусівських пристроїв знають, що в шторці Android є додаток, який дозволяє очистити пам'ять, хоча б, на час. Називається воно в п'ятірці Очистка, а в KitKat звалося химерніше - Посилення. При відкритті шторки іконка цієї програми показує кількість вільної на Наразіпам'яті. Так ось, коли на планшеті було встановлено версія Android 4.4.2, ця цифра коливалася в діапазоні 200-300 Мб і іконка, найчастіше, була жовтою. Зараз кількість вільної пам'яті змінюється від 400 до 600 Мб і іконка практично весь час зелена. Напевно, ця зміна пов'язана зі зміною віртуальної машини, що використовується в Lollipop, але, можливо, щось змінилося в самій прошивці, наприклад, Asus, що-небудь прибрав. Загалом треба розбиратися.

Зміна віртуалки мала вплинути ще на два параметри - швидкодію та енергоспоживання. Що можу сказати про швидкодію. Та нічого, мабуть. В іграшки я не ганяю, міряються папугами (Antutu та інше) не дуже люблю. Планшет, сам по собі, досить потужний, тому я гальм не помічав ні на KitKat, ні зараз у Lollipop. Все плавно та без нарікань. У мене, коли я за кермом, працює Відеореєстратор, Стрілка, Карти (або Яндекс або Гугл), ще я слухаю музику за допомогою Kodi, і, після всього цього, він ще реагує на перемикання на робочий стіл, запуск яких-небудь інших програм, загалом – звір.

А про енергоспоживання... В принципі, останній update на KitKat позбавив мене можливості скаржитися на неефективність пристрою. Якщо після первинної установки KitKat планшет за ніч втрачав по 20-30 відсотків енергозапасів, то після оновлення до 31 версії прошивки втрати стали цілком прийнятними - від двох до п'яти відсотків за ніч. Оновлення до Lollipop нічого не погіршило у цьому сенсі, і на тому велике спасибі. Що ж до споживання під навантаженням, тут знову можу привести досвід експлуатації в автомобілі: все ті ж вихідні - Відеореєстратор, Стрілка, Яндекс Навігатор, Kodi, яскравість екрана десь відсотків 75-80 - яскравий, сонячний день, плюс всі бездротові інтерфейси включені Так от, за час поїздки - близько двох годин - батарея розрядилася до 57 відсотків. На мою думку, цілком гідно. До речі, під KitKat було приблизно так само.

Ну і останнє – по черзі перерахування, але не за ступенем важливості – що хотілося б відзначити. Йтиметься про роботу із зовнішньою картою пам'яті. Я , як я виходив із положення, обумовленого обмеженнями KitKat для запису на зовнішню карту пам'яті. Мабуть, вал негативу був настільки сильним, що Google довелося прислухатися і щось змінити. А може, вони просто змінили щось, ні до кого не прислухаючись. Але залишимо це важливе питання осторонь (прислухалися/не прислухалися), перейдемо до самих змін.

Google дозволив стороннім програмамписати на картку пам'яті. В принципі, він і раніше не забороняв, просто дозволи були виставлені таким чином, що за звичайних умов доступ на запис на всю зовнішню карту був тільки у рідного файлового менеджера. Ну, може, якісь виробники дозволяли доступ ще й іншим своїм програмам, але я стикався лише з файловим менеджером. Тепер писати може будь-яка програма, але для цього має бути виконано кілька умов.

Перше - програма повинна використовувати нові можливості Storage Access Framework, а саме використовувати інтент OPEN_DOCUMENT_TREE і кілька нових, або оновлених, функцій SDK.

Друге – користувач повинен сам вирішити, до якої саме гілки (або гілок) файлової системи він дасть доступ тому чи іншому додатку. Тобто, можна дати доступ до всієї картки, якщо у відповідь на запит про доступ вказати її корінь, а можна дати доступ тільки до певної папки та її дочірніх елементів. Загалом, доведеться брати відповідальність на себе, і, у разі чого, нарікати теж доведеться лише на себе.

Третє – удача. У мене на планшеті все заробило, як треба, у товариша на HTC One M8 - не запрацювало, хоча в мережі є відеоЯк саме на цій моделі смартфона все чудово оре. Є припущення, щоправда, що не запрацювало через те, що картка в його телефоні була відформатована якось не так, може, без вказівки імені тома, а може, не в тій файловій системі.

Насправді це і радісна і сумна звістка одночасно. Радісна – тому, що тепер не треба отримувати root доступдо пристрою і можна не обмежуватися лише каталогом програми. Сумна - тому, що поки розробники не зможуть скористатися новим API і не випустять нові версії своїх програм, нічого не буде працювати. З мого досвіду: файловий менеджер ES Провідник вже обзавівся підтримкою нового API, і мені вдалося дати йому права на запис на всю зовнішню SD карту, а файловий менеджер Total Commander - не обзавівся і як і раніше не вміє писати на MicroSD картку - нікуди, крім свого власного каталогу. Ось так.

Насправді, у всій цій історії із записом на зовнішню карту пам'яті досить багато нюансів. Наприклад, дали ви якимсь програмам доступ, а яким забули. Де подивитись? Я так розумію, що зараз - ніде. Тобто, в принципі, можна подивитися, але не на самому планшеті, а на комп'ютері, якщо підключити до нього планшет і скористатися програмою adb. Ось потрібна команда:

Adb shell dumpsys activity providers

Але як теж отримати на планшеті - я не знайшов.

Наступне питання. Ось дали ви якійсь програмі доступ для запису в якусь папку, а потім передумали і хочете відібрати. Чи є така нагода? На щастя, так. Але з втратами. Перший, дуже радикальний спосіб – можна видалити програму та заново її встановити. Другий спосіб не такий кардинальний, але теж не ідеальний - треба в Налаштуваннях пристрою очистити дані програми. Звичайно, разом з правами доступу, видаляться й інші дані програми, так що виникає логічне питання про практичну застосовність даного методу. Інших методів виявити не вдалося, можливо, поки що. Застосовувати обидва способи можна, якщо заздалегідь забекапит дані програми, а після приведення якогось з методів в дію - відновити їх. Але тут виникає питання про можливості бекаперів - чи будуть бекапуватися тільки дані, або дані разом з дозволами? Якщо з дозволами, то після відновлення, ну, самі розумієте... Все це залежить від конкретних використовуваних додатків, так що, слід бути дуже уважними. І це ще один добрий привід подумати, перш ніж побачити стародавню Москву без санкції відповідних органів видати права будь-якому додатку на доступ до файлової системи зовнішньої картки.

Дальше більше. Що буде, якщо ви поміняєте картку, вставлену в слот вашого планшета? Відповідь така: вам доведеться окремо давати доступ до кожної картки, яку ви вставляєте у пристрій. В принципі це, напевно, логічно. Тобто, дали ви файловому менеджеру доступ до кореня картки, потім вийняли її та вставили іншу. Файловий менеджер писати на нову картку не буде, доведеться надавати доступ наново. Зате, коли ви повернете першу картку в планшет, файловий менеджер писатиме на неї без проблем.

Ще одне питання. Ось дали ви доступ до програми в якусь папку, не в кореневу. Минув час і вам знадобилося дозволити доступ на запис цієї програми в іншу папку на цій же картці. Чи можна це зробити? В принципі, це наслідок попереднього випадку, тож відповідь: так, можна. Тобто система для кожної програми буде пам'ятати список каталогів, до яких ви надали право доступу до запису.

Тепер нюанс, пов'язаний із програмами, встановленими на планшеті для кожного користувача, профіль якого створено на пристрої. Тут теж все логічно – для кожного користувача пристрої зберігаються свої права доступу за додатками, тобто кожен – сам коваль свого щастя, або, якщо хочете, сам собі злісний Буратіно.

Ну і звичайно, дуже багато залежить від кваліфікації розробників. Може так статися, що ви дасте права будь-якій програмі на доступ до зовнішньої картки на запис, а після перезавантаження планшета виявите, що доступу немає. Винен у такій ситуації лише розробник програми – він не потурбувався про те, щоб зберегти отриманий дозвіл. Можливо, вам варто замислитися і пошукати альтернативу цій програмі, бо мало чого такого програміст не передбачив.

А, так, ось так виглядає процес видачі прав на запис на microSD картку для ES.

Нам потрібна зовнішня картка

Спробуємо створити щось прямо в корені карти






Нам потрібно відобразити карту SD


Ось вона, наша зовнішня картка пам'яті



Ну от тепер, мабуть, усе.

P.S. Так вийшло, що з моменту, як я написав цей матеріал, минуло вже багато часу. Опублікувати можна було багато разів, але я все тягнув, незрозуміло чому. Точніше, я знаю, чому - все вирішував, як краще уявляти серію знімків екрану, що описує той чи інший процес: як просто послідовність вставлених зображень, або ж у вигляді слайд-шоу. Зрештою, рішення було прийнято - використовувати (принаймні, поки що) послідовність зображень. Як усе це відбувалося – тема для окремого посту. Поки що все залишається так, шкода тільки, що часу витрачено багато. Втішає лише, що недаремно. До того ж, сталася приємна подія. Я писав у цьому повідомленні, що доступ до зовнішньої картки пам'яті буде доступний лише тоді, коли автори програм почнуть використовувати нове API. Як приклад програми, в якому нове API не використовується, я навів Total Commander. Так ось, поки я зволікав з публікацією, Total Commander оновився, і тепер він теж уміє працювати із зовнішньою картою пам'яті у стилі Android Lollipop. Нижче я наводжу серію знімків екрана, що описують процес створення нового каталогу в корені зовнішньої картки пам'яті за допомогою Total Commander:

Вибираємо зовнішню картку пам'яті
і в меню вибираємо потрібний пункт
Ось тепер, мабуть, усе.

Багато щасливих власників пристроїв з 4.4.2 «на борту» вже напевно зіткнулися з проблемою неможливості запису даних на флешкарту більшістю додатків, встановлених на девайсі. Зроблено, як запевняє компанія Google для того, щоб зробити ОС Android 4.4.2 KitKat більш захищеною системою.

Обмеження запису на флешкарту стосуються насамперед програм, встановлених із сторонніх джерел. І, найголовніше, в Android 4.4.2 KitKat забороняється модифікація файлів, які безпосередньо не належать до програм, які хочуть зробити цю модифікацію. Звідси й неможливість запису на карту SD.

Насправді це обмеження означає буквально таке: користуйтеся стандартними месенджерами, фоторедакторами, файловими менеджерами! Тому що якщо розробник вашого ПЗ не зміг вчасно відреагувати і додати оновлення до вашого фоторедактора, наприклад, всі ваші відредаговані фотки будуть «живі» поки працює фоторедактор - записати-то на карту ваші відредаговані фотки у вас вже не вийде!

Більш просунуті користувачі, що постійно копіюють дані з флешки на комп'ютер і назад, можуть зіткнутися з такою проблемою: комп'ютер визначати визначає вашу « », бачить файли, але щось зробити з ними вже не може - відмова в доступі! Цю проблему можна виправити, встановивши на свій девайс програму, яка дасть доступ до . Але працювати ця програма буде лише на ROOT-ованих пристроях.


Працює SDFix: KitKat Writable просто: після встановлення та запуску програми ви натискаєте на Продовжити («Continue»), погоджуєтесь з умовами і знову натискаєте на Продовжити («Continue»). Якщо на вашому пристрої вже встановлено програму Superuser, вам слід дозволити в ньому доступ SDFix до ROOT-директорій.


SDFix KitKat Writable MicroSD в процесі своєї роботи змінить файл /system/etc/permissions/platform.xml, в якому пропише дозвіл для запису та модифікації файлів додатками, які мають дозвіл WRITE_EXTERNAL_STORAGE. Оригінал зміненого SDFix: KitKat Writable MicroSD файлу ви зможете знайти на ім'я platform.xml.original-pre-sdfix. Згодом ви завжди зможете відновити оригінальний файл.

Для «рукастих» користувачів, що володіють ROOT-доступом на своєму пристрої, є варіант внести виправлення в потрібний файл, не вдаючись до допомоги SDFix: KitKat Writable MicroSD.

Для цього запустіть файл-менеджер, який може редагувати файли, знайдіть файл platform.xml за адресою /system/etc/permissions/, і відкриваєте його за допомогою вбудованого редактора.


Після цього знаходите секції android.permission.WRITE_MEDIA_STORAGE та android.permission.WRITE_EXTERNAL_STORAGE і додаєте в цих секціях рядки з кодом:







Після цього в редакторі збережіть змінений файл.

Після перезавантаження пристрою всі неприємні проблеми, пов'язані з неможливістю запису та модифікації файлів на флеш-карті будуть вирішені.

Я купив новий телефон Samsung Galaxy S5, і відразу зіткнувся з проблемою в операційній системі Android. А точніше, версії Android 4.4 KitKat. У цій версії Android введена нова фішка розробників Google.

Тепер програмам заборонено доступ до редагування файлів на SD карті!Це призводить до того, що деякі програми непрацездатні!

Я розповім вам, як оминути цю проблему!

Доброго дня, шановні читачі нашого блогу!

Днями купив собі новий телефон! Samsung Galaxy S5!

НАСОЛОДЖЕННЯ НОВИМ ТЕЛЕФОНОМ

Вітаю себе з вдалою покупкою, яку мріяв кілька років! Телефон виявився чудово швидким, потужним, красивим та зручним!

Раніше у мене вже був телефон HTC(Йому вже близько 4-5 років) з Андроїд системою. Один з перших телефонів із такою системою (на момент покупки). Я його вивчив вздовж і впоперек, перепрошив систему кілька разів, вибрав прошивку Андроїд, яка за функціоналом багато перевершувала на той момент офіційну.

Для тих, хто не знає, перепрошивка — це заміна операційної системи телефону. Ну приблизно як переустановка Windowsна комп'ютері.

Пройшло багато часу, вийшло багато версій Андроїд (на момент покупки у мене була Андроїд 2.2). Нові версії та телефони, на яких вони встановлювалися, перевершують мій старенький смартфон. Тому я був сильно здивований міццю, швидкістю та функціональністю.

Насолоджувався я близько 4 діб. Потім натрапив на проблему!

ПРОБЛЕМА! Файлова система забороняє редагування файлу!

Після чергового оновлення, операційна система телефону сама оновилася до версії Android 4.4

Яким же був мій подив, коли я не зміг відредагувати жоден файл на власному телефоні! Спочатку я грішив на глюки, перевірив у різних папках, спробував відредагувати файл із комп'ютера (підключивши кабель до телефону). Жодним способом не виходило редагувати файли!

Переглянувши інформацію про операційну систему в Налаштування — Про пристрій — Стан SE для Android, я побачив слово Enforcing.

Це кодове слово Google означає версію Андроїд, де на рівні ядра операційної системи обмежені права програм! ЇМАЄ! Ну, я потрапив!

Я звернувся до інтернету за вирішенням проблеми

Ось що я виявив:

Х Вважаю, що мій телефон зовсім новий, з гарантією від виробника на 5 років!

Якщо отримати Root-доступ (адміністраторські права в системі Android), то гарантія від виробника (Samsung) зникає. Правду кажучи, деякі хакерські сайти стверджують, що є спеціальні методи повернути заводський лічильник до початкового положення. Заводський лічильник під час отримання Root-доступу обнулюється. Це показує обслуговуючу компанію про те, що телефон був зламаний, і гарантія на нього не поширюється.

Щоб вплинути на цей лічильник, потрібно розібрати телефон та залізти у мікросхеми. Тож не ведіться на такі обмани!

Якщо ви отримаєте Root-доступ, гарантія у вас зникне! Перевірено на старому телефоні!



У новій версії Android 5.0 Google використовує іншу логіку заборони на доступ до зовнішніх SD-карт пам'яті.

1. Як працює нова логіка?

Програми встановлюються в систему у скомпілюваному вигляді.Тобто у вигляді готовому до запуску. Це збільшує швидкодію, багатозадачність та зменшує витрату батареї.

Іншими словами, раніше в системі були файли дистрибутивів (настановні файли) і система, при запуску програми, компілювала його, перед запуском. Іншими словами, файли були запаковані, під час запуску програми файли розпаковувалися і запускалися.

Тепер, в Андроїд 5.0, всі програми встановлюються в скомпілюваному, розархівованому вигляді. Це призводить до того, що програми витрачають більше місця, але швидше виконуються!

2. До чого це призводить?

  1. Права доступу задаються програмою ПРИ ВСТАНОВЛЕННІ!
  2. Користувач має право сам встановлювати права конкретному додатку під час встановлення.
  3. Користувач може змінити права програми. Наприклад, якщо ви довіряєте якійсь програмі, можете дозволити їй редагування файлів на зовнішній карті пам'яті.

Я ХОЧУ ОБНОВИТИ АНДРОЇД ДО ВЕРСІЇ 5.0, щоб вирішити проблему!

Якщо я оновлю ОФІЦІЙНО версію операційної системи, то я ЗБЕРЕЖУ ГАРАНТІЮ!

Але мені потрібна версія Андроїд для Росії (саме для неї, а не для іншої країни), щоб не мучитися з англійськими словами в інтерфейсі.

Спробую знайти її.

Офіційна програма підтримки Samsung телефонів Kies каже, що мій телефон оновлено до останньої версіїПо.

Офіційні оновлення Андроїд (для нашого регіону) я не знайшов на офіційних сайтах.

На форумах я знайшов інформацію, що Google випустила версію прошивки для Росії у січні 2015 року. Але дуже повільно впроваджується на апарати клієнтів.

Таким чином, я можу почекати, поки на мій апарат не надійде повідомлення про те, що є оновлення. Після цього я зможу оновити Андроїд.

Принтери