Volver a crear la base de datos al utilizar proveedores de contenido

Mi aplicación para Android tiene una base de datos SQLite y un proveedor de contenido. Este proveedor de contenido está registrado en AndroidManifest.xml la aplicación. No se exporta, por lo que sólo mi aplicación puede verlo.

Como parte del restablecimiento del perfil del usuario, quiero borrar completamente esta base de datos y volver a crearla desde cero. Al principio intenté llamar a deleteDatabase() desde el contexto de la actividad. Esto funciona, pero sólo si la aplicación se cierra y reabrió después. De lo contrario, se bloqueará cuando intente insertar filas diciendo que la base de datos es de sólo lectura. Mi comprensión es que la conexión necesita ser cerrada primero antes de llamar a deleteDatabase() . Sin embargo, la conexión es administrada por el proveedor de contenido y no debe cerrarse manualmente, por lo que entiendo.

Como alternativa, estoy usando el método call() del ContentResolver para llamar a una función personalizada que borrará todos los datos de las tablas y restablecerá los conteos de secuencia manualmente.

Esto funciona, pero ahora tengo que eliminar los datos de cada tabla manualmente y tendrá que hacer un seguimiento de los cambios que hago en el futuro.

¿Hay una mejor manera de eliminar toda la base de datos y tener el onCreate() de mi DatabaseHelper ( SQLiteOpenHelper ) disparador cuando se utiliza un ContentProvider ?

Una sugerencia que viene a la mente es que su función personalizada deje de lado las tablas y las recree. Ya tiene el código para crear las tablas en onCreate() de DatabaseHelper . Refactor esto en alguna parte que es accesible por DatabaseHelper y el método personalizado.

  • Base de datos Sqlite que actualiza una fila Android
  • Tratar una gran base de datos en Android
  • Recyclerview + Proveedor de contenido + CursorLoader
  • Acceda a la base de datos en una clase que no sea de actividad
  • Estoy recibiendo una excepción de objeto de base de datos no cerrada en SQLite (Android), pero estoy cerrando explícitamente mi base de datos ... ¿Ayuda?
  • Android: Base de datos SQLite. ¿Necesitamos crearlo?
  • Navegador de base de datos SQLite con Android
  • Cómo obtener los nombres de todas las tablas presentes en una base de datos en Android lite de SQL
  • ¿Cómo puedo ver el contenido de un sqlite db de mi aplicación en un dispositivo real?
  • ¿Cuándo debo realizar ciertas operaciones SQLite en otro subproceso (no en el subproceso principal)?
  • Actualizar una columna como suma de otras dos columnas
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.