Android abrir o crear base de datos
Estoy tratando de crear una base de datos en mi tarjeta sd. Siempre que llamo a SQLiteDatabase.openOrCreateDatabase consigo el error:
07-21 13: 33: 17.587: ERROR / AndroidRuntime (5541): Causado por: android.database.sqlite.SQLiteException: no se puede abrir el archivo de base de datos
- Consulta de ORMLite para la fecha
- Cómo convertir milisegundos a la fecha en SQLite
- SQLite dispara en Android?
- ¿Cuál es la mejor estrategia de clave primaria para una aplicación móvil en línea / offline multi-cliente con base de datos SQLite y Azure SQL como almacén central?
- ¿Cómo saber todas las conexiones abiertas de la base de datos usando DAO verde ..?
¿Alguien sabe lo que puede estar causando esto? Aquí está el código que tengo en el método open () de mi clase de base de datos:
File sdcard = Environment.getExternalStorageDirectory(); String dbfile = sdcard.getAbsolutePath() + File.separator+ "external_sd" + File.separator + Schema.DATABASE_NAME ; db = SQLiteDatabase.openOrCreateDatabase(dbfile, null);
- SQLiteException - sólo ocurre en algunos dispositivos
- Necesita ejemplo de base de datos SQLite simple
- SQLiteOpenHelper no puede llamar a onCreate?
- SQLite static openDatabase error de método de base de datos en Android
- Calcular la distancia entre dos puntos directamente en SQLite
- Cómo convertir la matriz de bytes en Bitmap
- Cómo extraer el cursor y el valor entero de una matriz de clase Object
- Android - ¿Dónde está la base de datos SQLite almacenada
Una posible falla en esto podría ser que no estableció los permisos apropiados
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Sin embargo, el almacenamiento de datos en una tarjeta SD se considera inseguro. Porque cada aplicación que tiene permisos para almacenar datos en el almacenamiento sd podría acceder a la base de datos.
Editar: Otro posible problema es que el almacenamiento externo puede no estar disponible. Debe asegurarse de que su almacenamiento externo está actualmente grabable. Un método sería determinar el estado a través de getExternalStorageState
(ver referencia aquí ).
getExternalStorageState() returns MEDIA_SHARED if the media is present not mounted, and shared via USB mass storage.
Referencia . También hay un post de stackoverflow al comprobar el estado aquí: Error de escritura de archivo de texto en la tarjeta SD
- Leer pdf almacenado en la memoria interna (La ruta de archivo no es válida)
- Crear forma de onda de archivo de audio en android