Как сохранить контент, сгенерированный пользователем на KitKat+?
Это скорее дизайн, а не технический вопрос... На KitKat Google заблокировал запись на SD-карты, кроме указанной папки приложения. Это нормально для приложений, которые просто показывают контент, но как насчет приложений, которые генерируют контент (я имею в виду, что пользователи генерируют контент с помощью этого приложения: документы, базы данных, статистические данные)? Меня беспокоит, что если приложение будет удалено, то все данные будут удалены системой. Такое поведение не ожидается большинством пользователей, они просто не думают об этом. А что делают пользователи, когда приложение работает не так, как они ожидают? Да, попробуйте переустановить его в качестве первого решения. Потерять все свои пользовательские файлы! Резервное копирование их в облаке может быть хорошим вариантом, но SD-хранилище в основном используется для больших файлов, резервное копирование их по мобильной сети обходится дорого.
Таким образом, вопрос к разработчикам таких приложений: какой подход вы использовали, чтобы преодолеть последствия этого ограничения?
1 ответ
Как всегда
File folder = new File(Environment.getExternalStorageDirectory(), "/myApp/");
folder.mkdirs();
File file = new File(folder, "file.jpg");
// open output stream and write to it... works fine...
это работает как и должно быть на любой версии Android.
Насколько я понял, ограничение на KitKat заключается в том, что после того, как вы позвонили folder.mkdirs();
другие приложения не смогут получить к нему доступ. На Android для каждого приложения создается новый пользователь, так как они контролируют / блокируют разрешения, поэтому я считаю, что в KitKat изменилось (на самом деле не уверен и просто догадываюсь), что каждое создание файла помечает этот файл как чтение / запись просто владелец и никто другой.