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?

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.

  • Cómo eliminar la base de datos SQLite de Android mediante programación
  • Manejo del almacenamiento de disco completo en Android
  • Carácter turco en SQLite mientras utiliza la expresión LIKE
  • Acceso a la base de datos sqlite en el dispositivo android
  • Archivo está encriptado o no es una base de datos (excepción net.sqlcipher.database.SQLiteException)
  • Evite borrar los datos de la base de datos al hacer clic en el botón "borrar datos" en la configuración de la aplicación en el dispositivo Android
  • Ejemplos de proyectos sobre la copia de seguridad del archivo y las fotos de Sqlite en Google Drive mediante programación en Android
  • Almacenamiento de datos grandes local o en línea para la aplicación de Android?
  • Cómo insertar a granel de Json a Sqlite en Android
  • ¿Qué pasa con multithreading en Android SQLite?
  • Compare las fechas (almacenadas como cadena) en la base de datos android sqlite?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.