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

В моем приложении Android я сохраняю некоторые файлы с некоторым файлом данных, используя

FileOutputStream savedList = new FileOutputStream(Path);

в папке с именем myApp, расположенной в хранилище SD

К сожалению, я заметил, что некоторые чистые приложения, которые не очень хорошо реализованы, также очень популярны (например, CleanMaster), неправильно удаляют файлы каждый раз, когда пользователь выполняет очистку файла temp\trash, вызывая проблемы.

Есть ли способ защитить (и снять защиту для записи) файл программно, чтобы избежать этого?

Как изменить права доступа к файлам?

Так как не используются расширения файлов для распознавания формата файла, как я могу изменить метаданные файла, которые используются для определения формата файла, чтобы эти файлы отображались в виде документов этими приложениями? Я полагаю, что сканирование этих Cleaners использует некоторую стратегию, основанную на распознавании формата файла Linux, и удаляет все объектные файлы.

Ответ 1

Android позволяет иметь частную директорию на SD-карте для приложения. вы можете получить путь для частного каталога для своего приложения следующим образом.

Файл myDir = getExternalFilesDir (null);

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

myDir.mkdirs();

Log.d( "info", myDir.getPath());

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

Оформить заказ следующей ссылки из документации android. http://developer.android.com/reference/android/content/Context.html#getExternalFilesDir(java.lang.String)

Ответ 2

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

На телефонах с 4,4 вам может быть все в порядке, поскольку Google в основном предотвращает любые записи на SD-карту за пределами частного каталога. Приложения с чистым типом не будут работать, даже лучше или хуже.

Ответ 3

Сначала вы должны прочитать первый ответ этого вопроса. Что нужно помнить:

Нет, Environment.getExternalStorageDirectory() относится к тому, что производитель устройства считается "внешним хранилищем". На некоторых устройствах это съемный носитель, например SD-карта. На некоторых устройствах это часть встроенной вспышки.

SD-карта - это неопределенное понятие, совершенно невозможно быть на 100% уверенным, что вы пишете на SD-карте.

В этой статье вы должны использовать Android API для записи своего файла в личном каталоге приложения, расположенном в /path/to/external/storage/whatever/it/is/on/the/device/Android/data/com.package.yourapp/files

Используйте getExternalFilesDir, чтобы получить выше File и напишите свой файл в личном каталоге вашего приложения, таким образом, нет его можно будет удалить.