Protege y desprotege el archivo para evitar la eliminación accidental en Android mediante aplicaciones de limpieza con errores

En mi aplicación Android guardo algunos archivos con algún archivo de datos usando

FileOutputStream savedList = new FileOutputStream(Path); 

En una carpeta denominada myApp ubicada en el almacenamiento SD

Desafortunadamente he notado que algunas aplicaciones más limpias, no bien implementadas, también muy populares (por ejemplo, CleanMaster) erróneamente eliminar los archivos cada vez que el usuario realiza una limpieza de archivos temp \ trash causando problemas.

¿Existe una manera de proteger (y desproteger para escribir) el archivo mediante programación para evitar esto?

¿Cómo cambiar permisos de archivo?

Ya que no se utilizan las extensiones de archivo para reconocer el formato de archivo, ¿cómo puedo cambiar los metadatos del archivo que se utilizan para determinar el formato de archivo para que estos archivos se ven como documentos por estas aplicaciones? Supongo que la exploración de estos limpiadores utilizar alguna estrategia basada en el reconocimiento de formato de archivo de Linux y eliminar todos los archivos de objetos.

Android permite tener un directorio privado en la tarjeta SD para la aplicación. Puede obtener la ruta del directorio privado para su aplicación de la siguiente manera.

Archivo myDir = getExternalFilesDir (null);

// El parámetro null indica que va a almacenar cualquier tipo de archivos en el directorio

MyDir.mkdirs ();

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

Es lo mismo que cualquier directorio en la tarjeta SD lo único es que el almacén de datos en esta carpeta es privado para su aplicación y no está disponible para programas como galería. La carpeta se borra cuando se borra la aplicación del dispositivo.

Checkout siguiente enlace de documentos Android. http://developer.android.com/reference/android/content/Context.html#getExternalFilesDir(java.lang.String)

Escríbalo a su unidad interna privada, para que no tengan permiso para tocarla. Las tarjetas SD son sólo unidades FAT32, por lo que no admiten permisos de archivos ni listas de acceso.

En los teléfonos 4.4 puede que esté bien, ya que Google, básicamente, evita cualquier escritura a la tarjeta SD fuera de un directorio privado. Las aplicaciones de tipo más limpio no funcionarán en absoluto, para bien o para mal.

En primer lugar, debe leer la primera respuesta de esta pregunta . Lo que hay que recordar:

No, Environment.getExternalStorageDirectory () se refiere a lo que el fabricante del dispositivo considera como "almacenamiento externo". En algunos dispositivos, se trata de medios extraíbles, como una tarjeta SD. En algunos dispositivos, se trata de una parte del flash en el dispositivo.

La tarjeta SD es una noción vaga, es absolutamente imposible estar 100% seguro de que está escribiendo en la tarjeta SD.

Dicho esto, deberías usar la API de Android para escribir tu archivo en el directorio privado de la aplicación, ubicado en /path/to/external/storage/whatever/it/is/on/the/device/Android/data/com.package.yourapp/files

Use getExternalFilesDir para obtener el File anterior y escriba su archivo en el directorio privado de su aplicación, de esta manera, nadie podrá eliminarlo.

  • ¿Cómo puedo obtener permisos de root a través del SDK de Android?
  • Cómo evitar que otras aplicaciones definan el mismo nombre de permiso
  • Android - ¿Cómo puedo guardar un archivo legible por otra aplicación?
  • Android NDK limitaciones?
  • ¿Cómo conceder permiso para la aplicación que se descarga desde la tienda de juegos?
  • Obtener la dirección de correo electrónico del propietario de Android muy bien
  • ¿Por qué un permiso de GCM no se concede en Android 6?
  • Android - establece targetSdkVersion a 22 para evitar permisos de tiempo de ejecución, ¿cuáles son los posibles problemas?
  • Problemas con los permisos de Android bluetooth
  • Permiso de denegación: ... requiere android.permission.WRITE_EXTERNAL_STORAGE
  • Uses-permission vs permission para los permisos de android en el archivo manifest.xml
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.