Android 10 представляє прапорець Manifest для розробників додатків, який, коли ввімкнено, дозволяє користувачеві зберігати дані додатка під час видалення додатка. Читайте далі, щоб дізнатися більше!
Android 10 – це останнє оновлення Android від Google, яке містить a кілька покращень у зрілій ОС. Більшість змін і нових функцій з останнього оновлення також отримують виділили самі Google під час Google I/O або є незабаром знайдено після відкритий вихід. Але деякі помітні зміни, як правило, прослизають поза радаром, спливаючи через місяці, коли хтось випадково на них натрапляє. Це те, що відбувається в цьому випадку, тому що, як виявилося, Android 10 дозволяє розробникам запитувати своїх користувачів, чи хочуть вони зберегти дані програми, перш ніж їх програму буде видалено.
Недавній звіт від AndroidPolice виділив цю функцію. Такі додатки WhatsApp і Диктофон ASR почали пропонувати користувачам Android 10 можливість зберігати дані програми, яку збираються видалити.
Установивши прапорець, показаний вище, дані програми зберігаються на телефоні, незважаючи на видалення програми. Коли ви перевстановите програму, ви повернетеся в той самий стан у програмі, ніби ви ніколи не видаляли її спочатку.
Мішал провів невелике розслідування того, що відбувається за лаштунками. Щоб зрозуміти це, вам потрібно спочатку зрозуміти, як програми на Android можуть зберігати файли на вашому пристрої, і є три основні місця для зберігання файлів:
- Спеціальний каталог програми у внутрішньому сховищі (недоступному для користувача без кореневого доступу): ці папки розташовано за /data/data і недоступні для інших програм або коли користувач зазвичай підключає свій телефон до ПК. Додаткам не потрібен дозвіл на запис файлів у власний каталог програми в цьому місці.
- Спеціальний каталог програми у зовнішньому (доступному для користувача) сховищі: ці папки розташовано за адресою /data/media/{user}/Android/data і доступні для інших програм із відповідним дозволом, а також для користувача, коли він зазвичай підключає свій телефон до комп’ютера. Додаткам не потрібен дозвіл на запис файлів у власний каталог програми в цьому місці, але їм потрібен дозвіл на доступ до даних з інших програм, як згадувалося раніше.
- Будь-який каталог у зовнішньому (доступному для користувача) сховищі: програми можуть запитувати дозвіл на доступ до зовнішнього сховища, дозволяючи програмі створювати будь-яку папку, яка їй потрібна, на зовнішній пам’яті, щоб зберігати все, що вона хоче зберігати тут.
Розширюючи приклад WhatsApp, спеціальний каталог програми WhatsApp у внутрішній пам’яті знаходиться за адресою /data/data/com.whatsapp; його спеціальний каталог програми у зовнішній пам’яті знаходиться за адресою /data/media/{user}/Android/data/com.whatsapp; і його спеціальний каталог у зовнішньому сховищі знаходиться за адресою /data/media/{user}/WhatsApp.
До Android 10 і до того, як розробники ввімкнуть це для своїх програм, коли користувач видаляє програму, її каталоги для програми в обох внутрішніх (/data/data) і зовнішній (/data/media) сховища видаляються за замовчуванням. Зайві каталоги на зовнішній пам’яті не видаляються, і вам потрібно позбутися їх вручну або скористатися програмою, як SD Maid щоб зробити це за вас.
З Android 10 розробники додатків можуть додати до свого маніфесту спеціальний прапор під назвою "hasFragileUserData", який дозволяє їм запитувати користувача, чи хочуть вони зберегти дані програми після видалення програми, що ви бачите вище на знімку екрана. Коли ви видаляєте програму з установленим прапорцем, щоб зберегти дані програми, Android збереже, а не видалить каталоги програми у внутрішній і зовнішній пам’яті. Ми підтвердили це, перевіривши каталоги програм, які не додали прапор маніфесту, і ті, як WhatsApp, які додали прапор маніфесту.
На перший погляд, наявність цієї опції має сенс, оскільки користувачі можуть тимчасово видалити програми та повернутися до своїх попередній стан після повторної інсталяції, що має позбавити від проблем резервного копіювання та відновлення програми на тій самій пристрій. Але майте на увазі, що /data/data недоступний без root-права, тому ви, як користувач, не можете використовувати цей процес для резервного копіювання та відновлення без root-прав на різних пристроях. Користувачі також не можуть видалити файли, які залишилися в /data/data без кореня; тому, якщо ви захочете очистити файли в майбутньому, вам потрібно буде перевстановити програму, а потім видалити її, не встановлюючи прапорець. Використовуйте цей параметр для занадто великої кількості програм, і ви, швидше за все, забудете, які програми ви вибрали як користувач. Оскільки це необов’язково для розробників, а потім за бажанням для користувачів, ми вважаємо, що це загальна позитивна зміна, яка дає більше можливостей для кінцевого користувача.