Как запретить на android удалять/очищать телефону/пользователю базу данных?
У меня в приложении есть база данных sqlite.
Пользователь может зайти в настройки своего телефона->приложения->моё приложение
И там можно очистить кэш, это не страшно, но можно и отчистить данные приложения, в том числе и базу данных.
Как сделать так, чтобы при очистке не удалялась база данных?
Такой вариант ответа не устраивает, если делать полностью оффлайновое приложение.
Как вариант конечно можно бэкапиться на самом телефоне в какую нить папку. Но я надеялся всё-же, что можно как-то телефону указать, что эту базу данных не надо очищать/удалять.
Нет - так нельзя. Вот вы ставите свое приложение, а оно нафиг не нужно пользователю и эта база тоже - а удалить он не может. Если приложение специальное(узкоспециализированная задача устройства), то используйте специальную систему - где у пользователя нет прав что-либо удалить или очистить(может даже и выхода в систему нет).
А если используете стандартный андроид то будете подчиняться общим правилам.
Илья, однажды у меня в кармане понажимались настройки в приложении CoolReader, да так, что я не смог их поменять назад (не нашел всё, а получилось вырвиглазно). Решил очистить данные, типа всё вернётся на дефолт. Нифига. Решил удалить его, и поставить заново - нифига, всё равно настройки сбиты. Прошерстил всё, в поисках файла настроек, разные варианты имени... Не нашёл. В итоге нашёл в интернете, где оно хранит. Оказалось скрытый файл .cr в корне. Ппц, чуть не проклял автора.
Не надо делать пользователю то, чего он не просил. Никаких сохранений неизвестно куда. Только в стандартную папку приложения. Это телефон пользователя, а не твой, веди себя соответственно.