Есть ли способ создать "постоянный" файл?

Под "постоянным" я подразумеваю, что он сопротивляется опции удаления приложения, которую предлагает ОС Android. Очевидно, вы не можете сделать файл не удаляемым в пользовательском терминале, по крайней мере, пользователь всегда сможет удалить его через файловый менеджер, если он этого пожелает.

Мне нужно это, потому что в моем приложении, когда некоторые действия были выполнены, приложение запрещает делать некоторые другие. Пока что это контролируется с помощью файла, но ничто не мешает пользователю удалить приложение, и при новой новой установке этого больше не происходит.

Я мог бы реализовать некоторый тип логики на стороне сервера, чтобы предотвратить продолжение пользователя, но:

1) Это проще предотвратить, просто проверив файл.

2) Не так важно, что произойдет, если пользователю удастся обойти эту меру безопасности, поэтому я не против, если некоторые из них смогут обойти защиту, если файл может быть "постоянным" и находится в какой-то непонятный каталог, не многие пользователи смогут выполнить упомянутое поведение.

Есть какой-либо способ сделать это?

3 ответа

Решение

Просто получите разрешение на запись в файл и запишите файл в корневой каталог. Как описано здесь: https://developer.android.com/training/data-storage/files

После того, как вы запросите разрешения на хранение и убедитесь, что хранилище доступно, вы можете сохранить файлы двух разных типов:

  • Публичные файлы: файлы, которые должны быть свободно доступны для других приложений и для пользователя. Когда пользователь удаляет ваше приложение, эти файлы должны оставаться доступными для пользователя. Например, фотографии, сделанные вашим приложением или другими загруженными файлами, должны быть сохранены как общедоступные файлы.
  • Личные файлы: файлы, которые по праву принадлежат вашему приложению и будут удалены, когда пользователь удалит ваше приложение. Хотя эти файлы технически доступны пользователю и другим приложениям, поскольку они находятся во внешнем хранилище, они не обеспечивают ценность для пользователя вне вашего приложения.

Это можно сделать, настроив автоматическое резервное копирование, предполагая, что у пользователя это включено.

например, здесь я объяснил, как отключить это поведение в режиме отладки.

прогресс заключается в том, что он работает на нескольких устройствах, привязанных к учетной записи.

Вместо файла я бы предложил использовать следующее намерение, чтобы поймать удаление вашего приложения и поставить вашу логику, чтобы разрешить или запретить удаление

ACTION_PACKAGE_REMOVED -: Broadcast Action: Существующий пакет приложения был удален с устройства. Данные содержат название пакета. Устанавливаемый пакет не получает это намерение.

ACTION_PACKAGE_FULLY_REMOVED -: Broadcast Action: Существующий пакет приложения был полностью удален с устройства. Данные содержат название пакета. Это похоже на ACTION_PACKAGE_REMOVED, но устанавливается только тогда, когда EXTRA_DATA_REMOVED имеет значение true, а EXTRA_REPLACING имеет значение false для этой трансляции.

Другие вопросы по тегам