¿Cómo acceder a la carpeta de datos / datos en un dispositivo Android?

Estoy desarrollando una aplicación y sé que mi base de datos *.db aparecerá en data/data/com.****.***

Puedo acceder a este archivo desde AVD en Eclipse con la ayuda del administrador sqlite

Pero no puedo acceder a este archivo en mi teléfono Android.
Lo busco en google y dice que necesito rootear mi teléfono para hacerlo, pero no quiero hacerlo. (Nuevo teléfono, problemas de garantía y problemas de seguridad)

Así que aquí está mi pregunta: ¿Cómo puedo acceder a mi directorio de data/data/..... en mi teléfono Android ” sin enrutarlo “?

¿Puedo cambiar los permisos de usuario para los data/data..... del directorio data/data..... sin enrutarlos?

Acceder a los archivos directamente en su teléfono es difícil, pero puede copiarlos a su computadora donde puede hacer lo que quiera con él. Sin rooting tienes 2 opciones:

  1. Si la aplicación es depurable, puede usar el comando run-as en adb shell

     adb shell run-as com.your.packagename cp /data/data/com.your.packagename/ 
  2. Alternativamente puede usar la función de copia de seguridad de Android.

     adb backup -noapk com.your.packagename 

    Ahora se le pedirá que ‘desbloquee su dispositivo y confirme la operación de copia de seguridad’. Lo mejor es NO proporcionar una contraseña; de lo contrario, será más difícil leer los datos. Simplemente haga clic en “hacer una copia de seguridad de mis datos”. El archivo resultante ‘backup.ab’ en su computadora contiene todos los datos de la aplicación en formato de copia de seguridad de Android. Básicamente es un archivo tar comprimido. Esta página explica cómo puede usar el comando zlib de OpenSSL para descomprimirlo. Puede usar el comando adb restre backup.db para restaurar la copia de seguridad.

Si está utilizando Android Studio 3.0 o una versión posterior, siga estos pasos.

  1. Haga clic en Ver > Herramientas de Windows > Explorador de archivos de dispositivo .
  2. Expandir / datos / datos / [nombre del paquete] nodos.

Solo puede expandir paquetes que se ejecutan en modo de depuración en dispositivos no rooteados.

Pasos seguidos en Android Studio 3.0

También puede intentar obtener el archivo db utilizando la aplicación root explorer. Y si eso no funciona, puedes probar esto:

  1. Cmd abierto
  2. Cambie su directorio y vaya a ‘Herramientas de plataforma’
  3. Escriba ‘ adb shell
  4. su
  5. Presione ‘Permitir’ en el dispositivo
  6. chmod 777 /data /data/data /data/data/com.application.package /data/data/com.application.package/*
  7. Abra la vista DDMS en Eclipse y desde allí abra ‘FileExplorer’ para obtener su archivo deseado

Después de esto, debería poder navegar por los archivos en el dispositivo rooteado.

Para hacer cualquiera de las cosas anteriores (es decir, acceder a las carpetas protegidas desde su propio teléfono), todavía necesita la raíz. (Eso incluye cambiar los permisos de assembly en la carpeta / data y acceder a ella)

Sin root, no es posible acceder a /data directamente para leer, excepto desde dentro de su aplicación a través del código. De modo que podría intentar copiar ese archivo en una tarjeta SD o en algún lugar accesible, y luego, debería poder acceder a él normalmente.

Rootear no anulará su garantía si tiene un dispositivo desarrollador. Lo siento, no hay otra manera AFAIK.

La manera más fácil (solo un simple paso) de extraer un archivo de la carpeta de la aplicación que se puede depurar (digamos /data/data/package.name/databases/file ) en un dispositivo Android 5.0+ sin raíz es mediante el uso de este comando:

 adb exec-out run-as package.name cat databases/file > file 
  1. Abra su símbolo del sistema
  2. Cambie el directorio a E: \ Android \ adt-bundle-windows-x86_64-20140702 \ adt-bundle-windows-x86_64-20140702 \ sdk \ platform-tools
  3. Ingrese los comandos debajo
  4. adb -d shell
  5. run-as com.your.packagename cat databases/database.db > /sdcard/database.db
  6. Cambie el directorio a cd /sdcard para asegurarse de que database.db esté allí.
  7. adb pull /sdcard/database.db o simplemente puede copiar database.db del dispositivo.

Use File Explorer en eclipse. Seleccione Windows => Mostrar vista => Otro … => Explorador de archivos.

Otra forma es extraer el archivo a través de adb:

 adb pull /system/data/data//databases/ /sdcard 

En un dispositivo rooteado , la solución correcta es esta:

 Open cmd Change your directory and go into 'Platform tools' Type 'adb shell' su Press 'Allow' on device chmod 777 /data /data/data /data/data/* Open DDMS view in Eclipse/IntelliJ and from there open 'FileExplorer' to get your desired file 

La solución original funcionó, pero el chmod devolvería un directorio desconocido. Cambiar el comando chmod a / data / data / * dio acceso a todas las subcarpetas en el directorio de datos desde DDMS en Intellij. Supongo que la misma solución es verdadera para Eclipse DDMS.

ACTUALIZAR Entonces, lo que he encontrado es extraño. Estoy ejecutando un Nexus 6 usando DDMS en IntelliJ (Android Device Monitor). He creado una pequeña aplicación de inicio. Dicha aplicación guarda los datos en un archivo .csv en data / data / com.example.myapp / files

Cuando comencé a intentar acceder a este archivo en mi Nexus 6, descubrí que tenía que rootear el dispositivo. Pude ver la carpeta de datos, pero intentar abrirla no funcionaría. Como se menciona en línea en otros lugares, la expansión + se desvanecería y luego reaparecería poco después (tenga en cuenta que hay soluciones en la web que afirman permitir el acceso a estas carpetas sin rooting, no las encontré hasta muy tarde, y estoy No estoy seguro de si prefiero no rootear de todos modos ((Prefiero ser capaz de hacerlo manualmente que confiar en una aplicación o símbolo del sistema para darme mis soluciones))). Arraigé mi 6 y probé DDMS nuevamente.

En este punto, me mostró la carpeta de datos y pude expandir la carpeta y ver el com. directorios, pero no pude abrir ninguno de ellos. Fue entonces cuando descubrí la solución anterior. Las instrucciones iniciales no funcionarían en esta parte:

 chmod 777 /data /data/data /data/data/com.application.pacakage /data/data/com.application.pacakage/* 

Fue entonces cuando probé la solución que publiqué:

 chmod 777 /data /data/data /data/data/* 

Esa solución parecía funcionar, pero solo en ciertas carpetas. Ahora podría expandir mi carpeta myapp, pero no podría expandir el directorio de archivos en ella.

En este punto, jugué por un tiempo y luego pensé por qué no lo intenté en el directorio que necesitaba en lugar de probar estas entradas de comodines.

 chmod 777 /data /data/data /data/data/com.example.myapp/* 

Seguido por:

 chmod 777 /data /data/data /data/data/com.example.myapp/files 

Estos comandos me permitieron expandir y ver los archivos en el directorio de mi aplicación para confirmar que .csv se estaba guardando correctamente.

Espero que esto ayude a alguien. Luché con esto por horas!

(Para complicarlo un poco más, curiosamente, los permisos no pasaron al archivo .csv que pasó al directorio de archivos. mis permisos de directorio de archivos leen drwxrwxrwx y mis permisos de archivo log.csv -rw-rw — – .. solo para tu información)

También tuve el mismo problema una vez. No hay forma de acceder directamente al archivo dentro de dispositivos Android, excepto adb shell o rooting device.

Al lado de aquí hay 02 alternativas:

1)

  public void exportDatabse(String databaseName) { try { File sd = Environment.getExternalStorageDirectory(); File data = Environment.getDataDirectory(); if (sd.canWrite()) { String currentDBPath = "//data//"+getPackageName()+"//databases//"+databaseName+""; String backupDBPath = "backupname.db"; File currentDB = new File(data, currentDBPath); File backupDB = new File(sd, backupDBPath); if (currentDB.exists()) { FileChannel src = new FileInputStream(currentDB).getChannel(); FileChannel dst = new FileOutputStream(backupDB).getChannel(); dst.transferFrom(src, 0, src.size()); src.close(); dst.close(); } } } catch (Exception e) { } } 

2) Prueba esto: https://github.com/sanathp/DatabaseManager_For_Android

Para realizar una copia de seguridad de Android a escritorio

Abra la línea de comando cmd y ejecute esto: adb backup -f C: \ Intel \ xxx.ab -noapk your.app.package . No ingrese la contraseña y haga clic en Respaldar mis datos. Asegúrese de no guardar en la unidad C root. Puede ser denegado. Es por eso que guardé en C: \ Intel.

Para extraer el archivo * .ab

  1. Vaya aquí y descargue: https://sourceforge.net/projects/adbextractor/
  2. Extraiga el archivo descargado y navegue a la carpeta donde lo extrajo.
  3. ejecutar esto con sus propios nombres de archivo: java -jar abe.jar desempaquetar c: \ Intel \ xxx.ab c: \ Intel \ xxx.tar

Una de las maneras simples es crear su base de datos en la tarjeta SD. Porque no puede acceder a la carpeta de datos de su teléfono en la memoria interna, a menos que rootee su teléfono. Entonces, ¿por qué no simplemente crear su base de datos en la tarjeta SD?

Además, si lo desea, puede escribir algún código de copia de archivo para copiar su archivo de base de datos existente (desde la memoria interna) a la memoria externa sin necesidad de ninguna raíz.

adb backup no funcionó para mí, así que esto es lo que hice (Xiaomi Redmi Note 4X, Android 6.0):
1. Vaya a Configuración> Configuración adicional> Copia de seguridad y restablecimiento> Copias de seguridad locales .
2. Toque ‘Copia de seguridad’ en la parte inferior de la pantalla.
3. Desmarque las marcas de ‘Sistema’ y ‘Aplicaciones’.
4. Toque el botón de divulgación detallada a la derecha de la celda ‘Aplicaciones’ para navegar a la pantalla de selección de aplicaciones.
5. Seleccione la aplicación deseada y toque OK.
6. Después de completar la copia de seguridad, el archivo real debe ubicarse de alguna manera. El mío se puede encontrar en / MIUI / backup / AllBackup / _FOLDER_NAMED_AFTER_BACKUP_CREATION_DATE_ .
7. Luego seguí los pasos de esta respuesta de RonTLV para convertir realmente el archivo de respaldo (.bak en mi caso) en tar (duplicando desde la respuesta original):

a) Vaya aquí y descargue: https://sourceforge.net/projects/adbextractor/
b) Extraiga el archivo descargado y navegue a la carpeta donde lo extrajo.
c) ejecutar esto con sus propios nombres de archivo: java -jar abe.jar desempaquetar c: \ Intel \ xxx.ab c: \ Intel \ xxx.tar

puede copiar este archivo db en algún lugar de eclipse explorer (p. ej., sdcard o PC), y puede usar sqlite para acceder y actualizar este archivo db.

La pregunta es: how-to-access-data-data-folder-in-android-device?


Si el dispositivo Android es Bluestacks * Root Browser APK muestra datos / datos / ..


Intente descargar Root Browser desde https://apkpure.com/root-browser/com.jrummy.root.browserfree


Si el archivo es un archivo de texto, debe hacer clic en “Abrir como”, “Archivo de texto”, “Abrir como”, “Editor de texto RB”.

Puede ser que para acceder a esta carpeta necesite derechos administrativos.

Así que tienes dos opciones:-

  1. rootee su dispositivo y luego intente acceder a esta carpeta
  2. usar emulador

PD: si está utilizando alguna de las dos opciones anteriores, puede acceder a esta carpeta siguiendo estos pasos

abrir perspectiva DDMS -> su dispositivo -> (Seleccionar Explorador de archivos desde las opciones de la ventana derecha) seleccionar paquete -> datos -> datos -> nombre del paquete -> archivos

y desde allí puedes sacar tu archivo

También puede intentar copiar el archivo en la carpeta de la tarjeta SD, que es una carpeta pública, luego puede copiar el archivo a su PC donde puede usar sqlite para acceder a él.

Aquí hay un código que puede usar para copiar el archivo de datos / datos a una carpeta pública de almacenamiento:

 private void copyFile(final Context context) { try { File sd = Environment.getExternalStorageDirectory(); File data = Environment.getDataDirectory(); if (sd.canWrite()) { String currentDBPath = context.getDatabasePath(DATABASE_NAME).getAbsolutePath(); String backupDBPath = "data.db"; File currentDB = new File(currentDBPath); File backupDB = new File(sd, backupDBPath); if (currentDB.exists()) { FileChannel src = new FileInputStream(currentDB).getChannel(); FileChannel dst = new FileOutputStream(backupDB).getChannel(); dst.transferFrom(src, 0, src.size()); src.close(); dst.close(); } } } catch (Exception e) { e.printStackTrace(); } } 

Manifiesto:

     

Puede descargar un archivo sigle así:

adb exec-out run-as debuggable.app.package.name cat files/file.mp4 > file.mp4

Antes de descargar, es posible que no quiera echar un vistazo a la estructura del archivo en su App-Directory. Para esto, siga los siguientes pasos: Aviso anterior:

 adb shell run-as com.your.packagename cd files ls -als . 

La forma de Android-Studio que menciona Shahidul ( https://stackoverflow.com/a/44089388/1256697 ) también funciona. Para aquellos que no ven la opción DeviceFile Explorer en el menú: asegúrese de abrir / android-Directory en Android Studio. Por ejemplo, los usuarios nativos de reactivos tienen esto dentro de su carpeta de proyectos justo en el mismo nivel que el / ios-Directory.