sesion - ¿Cómo acceder a la carpeta de datos/datos en el dispositivo Android?
shazam sign up (17)
Para hacer una copia de seguridad de Android a escritorio
Abra la línea de comandos cmd y ejecute esto: adb backup -f C: / Intel / xxx.ab -noapk your.app.package . No introduzca la contraseña y haga clic en Copia de seguridad de mis datos. Asegúrese de no guardar en la unidad C root. Usted puede ser negado. Por eso guardé en C: / Intel.
Para extraer el archivo * .ab
- Vaya aquí y descargue: https://sourceforge.net/projects/adbextractor/
- Extraiga el archivo descargado y navegue a la carpeta donde extrajo.
- ejecute esto con sus propios nombres de archivo: java -jar abe.jar desempaque c: / Intel / xxx.ab c: / Intel / xxx.tar
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 de 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)
Entonces, aquí está mi pregunta: ¿Cómo puedo acceder a mi directorio data/data/.....
en mi teléfono Android " sin rootearlo "?
¿Puedo cambiar los permisos de usuario para los data/data.....
del directorio data/data.....
sin rootearlo?
- Abra su línea de comandos
- Cambie el directorio a E: / Android / adt-bundle-windows-x86_64-20140702 / adt-bundle-windows-x86_64-20140702 / sdk / platform-tools
- Ingrese los siguientes comandos
-
adb -d shell
-
run-as com.your.packagename cat databases/database.db > /sdcard/database.db
- Cambie el directorio a
cd /sdcard
para asegurarse de quedatabase.db
esté allí. -
adb pull /sdcard/database.db
o simplemente puede copiar database.db desde el dispositivo.
Acceder a los archivos directamente desde su teléfono es difícil, pero puede copiarlos en su computadora donde puede hacer lo que quiera con ellos. Sin rootear tienes 2 opciones:
Si la aplicación es debuggable, puede usar el comando
run-as
en el shell adbadb shell run-as com.your.packagename cp /data/data/com.your.packagename/
Alternativamente, puede utilizar 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''. Es mejor NO proporcionar una contraseña, de lo contrario, será más difícil leer los datos. Simplemente haga clic en ''copia de seguridad de mis datos''. El archivo ''backup.ab'' resultante 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 restore backup.db
para restaurar la copia de seguridad.
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. El cambio del 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 cierta para Eclipse DDMS.
ACTUALIZACIÓN Entonces, lo que he encontrado es extraño. Estoy ejecutando un Nexus 6 usando DDMS en IntelliJ (Monitor de dispositivo Android). He construido una pequeña aplicación de arranque. Dicha aplicación guarda 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 ... podía ver la carpeta de datos, pero intentar abrirla no funcionaría. Como se mencionó en línea en otros lugares, la expansión + desaparecería y luego reaparecería poco después (nota, hay soluciones en la web que afirman permitir el acceso a estas carpetas sin rooting, no las encontré hasta demasiado tarde y estoy No estoy seguro de si prefiero no rootear ((preferiría poder hacerlo manualmente que confiar en una aplicación o un indicador de comandos para darme mis soluciones))). Saqué mi 6 y probé DDMS otra vez.
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án 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é un rato y luego me di cuenta de por qué no lo intentaba en el directorio que necesitaba, en lugar de probar estas entradas comodín.
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 el archivo .csv se estaba guardando correctamente.
Espero que esto ayude a alguien. ¡Luché con esto por horas!
(para empeorar esto un poco más, curiosamente, los permisos no pasaron al archivo .csv que pasó al directorio de archivos. los permisos del directorio de mis archivos leen drwxrwxrwx y los permisos de mis archivos log.csv leen -rw-rw --- - .. solo para tu información)
La forma más sencilla (solo un paso simple) 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 rootear es usando este comando:
adb exec-out run-as package.name cat databases/file > file
La pregunta es: ¿cómo acceder a los datos de la carpeta de datos en el dispositivo Android?
Si el dispositivo Android es Bluestacks * Root Browser APK muestra data / data / ..
Intente descargar el navegador de raíz de 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"
Para realizar cualquiera de las acciones anteriores (es decir, acceder a las carpetas protegidas desde su propio teléfono), aún necesita root. (Eso incluye cambiar los permisos de montaje en la carpeta / data y acceder a ella)
Sin root, no es posible acceder a /data
directamente para leer, excepto desde su aplicación a través del código. Por lo tanto, podría intentar copiar ese archivo en una tarjeta SD o en un lugar accesible, y luego, debería poder acceder a él normalmente.
Rooting no anulará su garantía si tiene un dispositivo desarrollador. Lo siento, no hay otra manera de AFAIK.
Puede ser para acceder a esta carpeta necesita derechos administrativos.
Así que tienes dos opciones:-
- Rootea tu dispositivo y luego intenta acceder a esta carpeta.
- usar emulador
ps: si está usando alguna de las dos opciones anteriores, puede acceder a esta carpeta siguiendo estos pasos
abra la perspectiva DDMS -> su dispositivo -> (seleccione File Explorer de las opciones de la ventana derecha) seleccione el paquete -> data -> data -> package name -> files
y desde allí puede sacar su archivo
Puedes 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 desee ver la estructura de archivos en su Directorio de aplicaciones. Para esto haz los siguientes pasos antes del aviso:
adb shell
run-as com.your.packagename
cd files
ls -als .
La forma en que Android Shahidul menciona ( https://.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 react tienen esto dentro de su carpeta de proyecto en el mismo nivel que el directorio / ios.
Si está utilizando Android Studio 3.0 o una versión posterior, siga estos pasos.
- Haga clic en Ver > Herramientas de Windows > Explorador de archivos de dispositivos .
- Expanda los nodos / data / data / [nombre-paquete] .
Solo puede expandir paquetes que se ejecutan en modo de depuración en un dispositivo no rooteado.
También puede intentar copiar el archivo a 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 a una carpeta de almacenamiento público:
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:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />
También puede intentar obtener la base de datos utilizando la aplicación root explorer. Y si eso no funciona, puedes probar esto:
- Abrir cmd
- Cambia tu directorio y entra en ''Herramientas de plataforma''
- Escribe ''
adb shell
'' -
su
- Presione ''Permitir'' en el dispositivo
-
chmod 777 /data /data/data /data/data/com.application.package /data/data/com.application.package/*
- Abra la vista DDMS en Eclipse y desde allí abra ''FileExplorer'' para obtener el archivo deseado
Después de esto, debería poder examinar los archivos en el dispositivo rooteado.
También tuve el mismo problema una vez. No hay manera de acceder directamente al archivo dentro de los dispositivos Android, excepto el shell adb o el dispositivo de enraizamiento.
A continuación 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) Pruebe esto: https://github.com/sanathp/DatabaseManager_For_Android
Una de las formas más sencillas es crear su base de datos en una tarjeta SD. Debido a que no puede obtener acceso a la carpeta de datos de su teléfono en la memoria interna, a menos que usted raíz 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 raíz.
Utilice el Explorador de archivos en eclipse. Seleccione Windows => Mostrar vista => Otro ... => Explorador de archivos.
Otra forma es tirar el archivo a través de adb:
adb pull /system/data/data/<yourpackagename>/databases/<databasename> /sdcard
puede copiar este archivo db en algún lugar del eclipse explorer (por ejemplo: sdcard o PC), y puede usar sqlite para acceder y actualizar este archivo db.
adb backup
no me funcionó, 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 restablecer> Copias de seguridad locales .
2. Toque ''Copia de seguridad'' en la parte inferior de la pantalla.
3. Desmarque las marcas de verificación ''Sistema'' y ''Aplicaciones''.
4. Pulse el botón de información detallada a la derecha de la celda ''Aplicaciones'' para navegar a la pantalla de selección de aplicaciones.
5. Seleccione la aplicación que desee y toque Aceptar.
6. Una vez que se completó 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 para convertir el archivo de copia de seguridad (.bak en mi caso) en tar (duplicando de la respuesta original):
"
a) Vaya aquí y descargue: https://sourceforge.net/projects/adbextractor/
b) Extraiga el archivo descargado y navegue a la carpeta donde extrajo.
c) ejecute esto con sus propios nombres de archivo: java -jar abe.jar desempaque c: / Intel / xxx.ab c: / Intel / xxx.tar
"