El explorador de archivos DDMS no puede acceder a data \ data (HTC Desire HD)
Estoy trabajando en algún código SQLite y me gustaría examinar la base de datos. Si ejecuto el código en el emulador puedo sacar el archivo de data \ data \ myProject \ bases de datos usando el administrador de archivos DDMS pero si lo ejecuto en hardware real la carpeta data \ data es inaccesible. ¿Hay alguna manera alrededor de esto aparte de ganar el acceso de la raíz al teléfono?
- SQLite de SQL INSERT o IGNORE no funciona
- Sqlite plugin para Eclipse: depurar la base de datos sqlite en el dispositivo Android en vivo
- ¿Cómo obtener tablas columnas arraylist en Android?
- Sqlite en Android: Cómo crear una función sqlite dist db - que se utilizará en la aplicación para calcular la distancia utilizando lat, largo
- ¿Cómo puedo almacenar datos de las pocas aplicaciones en un solo lugar?
- RawQuery: enlace o índice de columna fuera de rango
- ¿Qué hará un SQLiteCursor si una columna es nula?
- Limitar el número de filas devueltas desde sqlite
- Cómo formatear la cláusula WHERE y '?' En una consulta SQLite?
- Base de datos SQLite de Android: inserción lenta
- ¿Es necesario cerrar una base de datos abierta con window.openDatabase?
- ¿Necesito llamar a getWritableDatabase () cada vez que manipulo datos
- Sqlite Seleccione Query con rawQuery en Android
Base de datos SQLIte es en realidad sólo un archivo almacenado en la memoria del teléfono, que se puede copiar a la tarjeta SD del teléfono y luego acceder fácilmente desde su PC. Debajo está la función que hace exactamente lo que usted necesita. Sólo asegúrese de cambiar el nombre del paquete y el nombre de la base de datos antes de usar la función.
public static void backupDatabase() throws IOException { //Open your local db as the input stream String inFileName = "/data/data/your.package.name/databases/database.sqlite"; File dbFile = new File(inFileName); FileInputStream fis = new FileInputStream(dbFile); String outFileName = Environment.getExternalStorageDirectory() + "/database.sqlite"; //Open the empty db as the output stream OutputStream output = new FileOutputStream(outFileName); //transfer bytes from the inputfile to the outputfile byte[] buffer = new byte[1024]; int length; while ((length = fis.read(buffer))>0){ output.write(buffer, 0, length); } //Close the streams output.flush(); output.close(); fis.close(); }
Como se puede observar en el código, la base de datos siempre se almacena en la carpeta:
/data/data/your.package.name/databases/
Nombre (en nuestro ejemplo "database.sqlite") es el que escogió al extender SQLiteOpenHelper. Obviamente, también necesita reemplazar "your.package.name" por el nombre de su paquete de aplicación.
Tienes que arraigar tu dispositivo. Vaya al símbolo del sistema y vaya a la ubicación donde se encuentra su adb.
p.ej
C: \ Archivos de programa \ Android \ android-sdk \ platform-tools
Tipo adb root
. Ahora vaya a su explorador de archivos y verifique.
Copiar archivo a / mnt / sdcard usando
cp /data/data/<packagename>/databases/<dbname>/<filename> /mnt/sdcard
Usando adb y luego copiar a su escritorio desde / mnt / sdcard usando
adb pull /mnt/sdcard/<filename>
Y luego usar sqlite3 para verlo.
Creo que su aplicación puede cambiar los permisos unix de sus archivos de datos de almacenamiento local de tal manera que sean accesibles a otras aplicaciones ya adb.
Sin embargo, su aplicación no puede cambiar la falta de permiso de lista en el directorio / data de un teléfono seguro.
Como resultado, tendría que tomar el archivo con 'adb pull / full / path / to / file' – no puede navegar a él ya que no puede generar una lista de / data o probablemente varios otros directorios de directorio intermedio de su archivo.
Realmente sobre la única manera alrededor de esto es poner su archivo algún lugar donde usted puede conseguir el acceso a él como hacia fuera en el sdcard durante desarrollo. Entonces una vez que esté satisfecho las cosas son trabajo correctamente poner el archivo donde quiera.
Digo esto porque tengo un Nexus One minorista y un desarrollador Nexus One. Mientras usaba el Explorador de archivos DDMS me di cuenta de que podía navegar por la carpeta de datos en el dispositivo de desarrollo, pero no podía hacerlo en el dispositivo minorista. Arraigé mi dispositivo al por menor y no ayudó.
Así que supongo que más investigación tiene que hacerse sobre este problema. Pero hasta entonces espero que esto ayude.
- Fragmento de la pila trasera y isRemoving ()
- Android NavigationView (material support lib) no interactúa con la barra de estado correctamente