reciclaje pasar papelera htc galeria desire carpeta archivos aplicaciones administrador android sqlite ddms

android - pasar - papelera reciclaje htc desire



El explorador de archivos DDMS no puede acceder a los datos / datos(HTC Desire HD) (5)

Estoy trabajando en un código SQLite y me gustaría examinar la base de datos. Si ejecuto el código en el emulador, puedo extraer el archivo de las bases de datos data / data / myProject / utilizando el administrador de archivos DDMS, pero si lo ejecuto en el hardware real, no puedo acceder a la carpeta data / data. ¿Hay alguna otra forma de evitar esto obteniendo acceso de root al teléfono?


Copie el archivo a / mnt / sdcard usando

cp /data/data/<packagename>/databases/<dbname>/<filename> /mnt/sdcard

usando adb y luego copie a su escritorio desde / mnt / sdcard usando

adb pull /mnt/sdcard/<filename>

y luego usa sqlite3 para verlo.


Creo que su aplicación puede cambiar los permisos de Unix de sus archivos de datos de almacenamiento local para que sean accesibles para otras aplicaciones y para 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 agarrar el archivo con ''adb pull / full / path / to / file'' - no puede buscarlo ya que no puede generar una lista de / data o probablemente varios otros padres del directorio intermedio de su archivo.


Realmente, la única forma de evitar esto es ubicar su archivo en algún lugar en el que pueda obtener acceso a él como en la tarjeta SD durante el desarrollo. Luego, una vez que esté satisfecho, las cosas funcionarán correctamente y coloque el archivo donde desee.

Digo esto porque tengo un Nexus One y un desarrollador Nexus One. Mientras utilizaba el Explorador de archivos DDMS, noté que podía navegar por la carpeta de datos en el dispositivo desarrollador pero no en el dispositivo minorista. Rooteo mi dispositivo de venta y no ayudó.

Así que supongo que se debe hacer más investigación sobre este problema. Pero hasta entonces espero que esto ayude.


SQLIte Database es en realidad solo un archivo almacenado en la memoria del teléfono, que puede copiar en la tarjeta SD de su teléfono y luego acceder a él fácilmente desde su PC. A continuación se muestra la función que hace exactamente lo que necesita. Solo asegúrese de cambiar el nombre de su 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 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 eligió al extender SQLiteOpenHelper. Obviamente, también debe reemplazar "su.paquete.nombre" con el nombre de su paquete de aplicación.


Tienes que rootear tu dispositivo. Vaya a la línea de comandos y vaya a la ubicación donde se encuentra su adb.

p.ej

C: / Archivos de programa / Android / android-sdk / platform-tools

escriba adb root . Ahora ve a tu explorador de archivos y comprueba.