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
- ¿Cómo inhabilitar a Google para solicitar permiso para revisar regularmente las aplicaciones instaladas en mi teléfono?
- ¿Cómo hacer que el permiso de gps sea opcional?
- Android utiliza el problema de permiso al instalar aplicaciones en orden incorrecto
- Android Exception: java.io.IOException: open failed: EACCES (permiso denegado)
- Determinación del nivel de permiso de Android
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.
- Períodos de ejecución de Android en las mejores prácticas de Android 6.0 (nivel de API 23)
- "DIBUJAR SOBRE OTRA APLICACIÓN" es qué permiso en android
- ActivityCompat.requestPermissions que no muestran el cuadro de diálogo
- Android Java: Desactivar la pantalla
- Error de permiso de acceso directo a la pantalla de inicio de Android
- ¿Por qué mi aplicación echa un `android.permission.REBOOT SecurityException`?
- Android createTempFile lanza permiso denegado?
- Android: Herramientas del sistema: Alertas de nivel del sistema de visualización: ¿Cómo utilizar este permiso?
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.