Cómo leer la base de datos de otra aplicación
Estoy trabajando en un dispositivo arraigado. He conectado con la cáscara del adb de mi PC y puedo verificar que la otra base de datos existe y puedo consultar sus tablas.
Sin embargo en el código de mi java cuando intento abrir la base de datos consigo el error
- Cómo convertir una base de datos MSSQL en una base de datos SQLite para Android
- Utilizar el operador OR con 2 marcadores de posición con el mismo valor
- Obtener base de datos SQLite desde la aplicación de Android
- SQLiteException: cerca de "": error de sintaxis (código 1) al compilar
- Almacenamiento y recuperación de datos no ingleses en la base de datos sqlite en android
android.database.sqlite.SQLiteException: no se puede abrir el archivo de base de datos
Estoy intentando abrir la base de datos como esto:
SQLiteDatabase.openDatabase(PATH, null, SQLiteDatabase.OPEN_READONLY);
El camino es algo como /data/data/com.xxx.xxx/databases/xx.db
¿Se supone que debo leer las bases de datos de otras aplicaciones como ésta o hay otra manera?
ACTUALIZACIÓN: También intenté hacer la aplicación del sistema como se ha aconsejado en este hilo Empuje mi apk a / system / app
Creo que funciona porque la aplicación no se puede desinstalar después de que desde el administrador de aplicaciones como las aplicaciones ordinarias, así que creo que es una aplicación del sistema. Pero aún así no puedo acceder a la base de datos aunque estoy seguro de que las rutas y los permisos están bien.
- Cifrado sqlite para android
- Cómo agregar la clave principal al tipo de datos de texto en android sqlite?
- SQLiteException: tabla ya existe
- Descargar la base de datos SQLite desde Internet y cargarla en la aplicación de Android
- sqlite insertar en tabla select * from
- ¿Por qué INSERTs y UPDATEs son más lentos en Android 4.0?
- Android - Almacenamiento de datos confidenciales en la base de datos sqlite
- Android: SQLite - insertWithOnConflict
El sistema operativo Android de forma predeterminada no permite que las aplicaciones accedan a las carpetas privadas de cada uno. Para poder leer archivos que están en otra carpeta de aplicaciones:
1) necesita tener ambas aplicaciones instaladas utilizando el mismo user id
. Añada esto a ambos manifiestos:
android:sharedUserId="com.xx.xx"
2) Si otra aplicación es una aplicación de terceros, su única opción es instalar su aplicación como aplicación del sistema. Para ello necesita un teléfono enraizado y necesita montar la carpeta del system
. Y entonces usted necesita poner su aplicación en /system/app/
carpeta y reiniciar el teléfono. Debe instalarse automáticamente durante el arranque.
Supongo que los permisos en los archivos de base de datos se establecen de tal manera que su aplicación no tiene acceso. Incluso si su dispositivo está enraizado no significa que su aplicación se ejecuta como root.
Esto se debe a que la aplicación necesita raíz y necesita cambiar los permisos de la base de datos a la que intenta acceder para que pueda acceder a ella. Lo que tendrás que hacer es, como root, cambiar los permisos de la base de datos para que todos puedan acceder a ella, hacer lo que quieras en la base de datos, cerrar la base de datos y cambiar los permisos de nuevo.
Esto evita la seguridad de Android, así que proceda a su propio riesgo. Puede encontrar un ejemplo de código en:
- Android – tema de los padres desaparecidos?
- ¿Por qué se abre la pantalla del símbolo del sistema 2-3 veces antes de que comience el emulador de Android?