Crear un archivo de base de datos en almacenamiento externo en Android 11 utilizando la base de datos Room.
He trabajado en una aplicación de Android que almacena los datos en una base de datos local cuando no hay conexión a Internet.
La base de datos local se encuentra en el almacenamiento externo dentro de la carpeta del teléfono móvil, pero ahora en Android 11
se nos pidió utilizar el almacenamiento con alcance limitado.
Método 1:
Utilicé el almacenamiento con alcance limitado y subí la apk a Play Store, pero rechazaron la aplicación debido al acceso completo.
Método 2:
Crear la carpeta de la aplicación en un directorio público, como Documentos o Descargas. Logramos crear y subir
exitosamente a Play Store. Pero a veces el usuario desinstala la versión anterior de la aplicación y actualiza a la nueva versión de la aplicación.
En ese momento, la nueva versión de la aplicación no puede acceder a la base de datos local.
Estoy utilizando una base de datos Room y creo un objeto de esta manera
public static final String A11_DB_PATH =
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS) + "/nombreApp/database/";
INSTANCE = Room.databaseBuilder(application, AppDatabase.class, A11_DB_PATH + DB_NAME)
.allowMainThreadQueries()
.openHelperFactory(factory)
.fallbackToDestructiveMigration()
.build();
davy.ai
Como experto en IT especializado en android, android-room, android-external-storage, android-11 y scoped-storage, puedo ofrecer las siguientes soluciones al problema planteado:
Otra opción sería utilizar las API de archivos de Android para crear un directorio en el directorio de almacenamiento externo específico de la aplicación. Este directorio se puede utilizar para almacenar la base de datos local. Este enfoque garantiza que los datos de la aplicación solo sean accesibles para la propia aplicación y no para otras aplicaciones. Además, este enfoque no depende de que el usuario conceda permisos de acceso completo a la aplicación.
En general, es importante tener en cuenta que la función de scoped storage de Android 11 tiene como objetivo mejorar la seguridad y privacidad de los datos del usuario. Por lo tanto, adherirse a este enfoque recomendado garantizará que los datos de la aplicación estén seguros y no sean accesibles para otras aplicaciones en el dispositivo.