¿Cómo puedo extraer bases de datos de mi Android en mi escritorio?
Estoy intentando esto con mi Nexus One. Tengo el androide SDK y he utilizado el comando adb pull /data/data/com.myapp.android/databases C: \ pulls pero todo lo que consigo es tirar: la construcción de lista de archivos … 0 archivos extraídos. 0 archivos saltados. Además, parece que no importa la cantidad de datos que agregué a la aplicación de Bloc de notas tutorial que instalé, el tamaño de los datos de la aplicación (como se muestra en Configuración) nunca supera los 8 KB. ¿Cómo es esto posible? ¿Hay algún otro lugar donde se almacenan las bases de datos? Cuando uso la vista Explorador de archivos (que forma parte de ADT) en Eclipse, veo que no hay nada en / data. Para añadir un giro, no tengo problemas para sacar otros archivos del dispositivo. Son sólo las bases de datos con las que tengo problemas. ¿Me estoy perdiendo de algo? Muchas gracias.
- Eclipse no muestra mi nexo galaxia con Android 4?
- El sensor de luz en Nexus One devuelve sólo dos valores distintos
- Niveles de registro de Android
- Android: Nexus One - Geocoder causa IOException - funciona perfectamente con otros dispositivos y emuladores
- No se puede trabajar con Android en una red corporativa con seguridad WPA / WPA2. Siempre desconecta?
- Eliminar completamente WiFi de Android Rom (Incluyendo configuración)
- Android Nexus One - ¿Puedo ahorrar energía con esquema de color?
- Actividad de captura de cámara Android devuelve null Uri
- Tiempo de generación de DH Keypair en Android
- Adb devices no está trabajando en Mountain Lion
- LED de notificación - color
- No se puede conectar Nexus One Phone a Android adb
- Nexus One / Android "La CPU puede estar vinculada" bug
No es posible acceder al almacenamiento interno a menos que el teléfono esté enraizado. Una manera simple es usar el emulador, y entonces usted puede conseguir en los archivos. Para obtener una base de datos fuera del dispositivo que escribió una pequeña utilidad y poner en algún depuración UI para él:
private void backupDb() throws IOException { File sd = Environment.getExternalStorageDirectory(); File data = Environment.getDataDirectory(); if (sd.canWrite()) { String currentDBPath = "/data/com.yourcompany.yourapp/databases/yourapp.db"; String backupDBPath = "/yourapp_logs/yourapp.db"; File currentDB = new File(data, currentDBPath); File backupDB = new File(sd, backupDBPath); if (backupDB.exists()) backupDB.delete(); if (currentDB.exists()) { makeLogsFolder(); copy(currentDB, backupDB); } dbFilePath = backupDB.getAbsolutePath(); } } private void makeLogsFolder() { try { File sdFolder = new File(Environment.getExternalStorageDirectory(), "/yourapp_logs/"); sdFolder.mkdirs(); } catch (Exception e) {} } private void copy(File from, File to) throws FileNotFoundException, IOException { FileChannel src = null; FileChannel dst = null; try { src = new FileInputStream(from).getChannel(); dst = new FileOutputStream(to).getChannel(); dst.transferFrom(src, 0, src.size()); } finally { if (src != null) src.close(); if (dst != null) dst.close(); } }
Cree un archivo "pull.bat" en el escritorio de Windows.
En el archivo puesto:
db pull /data/com.APPNAME/databases/DBNAME.sqlite pause
Si está utilizando MAC o Linux, pruebe este script. Esto no requiere permisos de root
#!/bin/bash REQUIRED_ARGS=2 ADB_PATH=/Users/Tadas/Library/sdk/platform-tools/adb PULL_DIR="~/" if [ $# -ne $REQUIRED_ARGS ] then echo "" echo "Usage:" echo "android_db_move.sh [package_name] [db_name]" echo "eg. android_db_move.sh lt.appcamp.impuls impuls.db" echo "" exit 1 fi; echo"" cmd1="$ADB_PATH -d shell 'run-as $1 cat /data/data/$1/databases/$2 > /sdcard/$2' " cmd2="$ADB_PATH pull /sdcard/$2 $PULL_DIR" echo $cmd1 eval $cmd1 if [ $? -eq 0 ] then echo ".........OK" fi; echo $cmd2 eval $cmd2 if [ $? -eq 0 ] then echo ".........OK" fi; exit 0
- Android Manejo de muchos campos de EditText en un ListView
- Android – file.exists () devuelve false para el archivo existente (para algo diferente de pdf)