2010-05-11 13 views
9

Tengo problemas para acceder a la base de datos mientras desarrollo el teléfono. Cada vez que ejecute¿Cómo acceder a la base de datos cuando se desarrolla en un teléfono Android?

cd /data/data/com.mycompck/databases

y luego ejecutar ls me sale: "opendir failed, Permission denied"

O cada vez que escribo en sqlite3 me sale: "sqlite3: permission denied"

¿Qué estoy haciendo mal?

¿Hay algunas aplicaciones que me pueden ayudar a obtener una vista humana de los valores de los resolvedores de contenido y/o bases de datos SQLite?

Respuesta

1

Para responder la primera parte de su pregunta, visita this answer. Básicamente, su teléfono necesita tener acceso de root, y necesita ejecutar adb en modo raíz (usando "adb root").

En cuanto a la segunda parte, uso SQLite Database Browser para ver mis dbs de SQLite (aunque eso es solo cuando el db está en mi computadora, no conozco ningún navegador en el dispositivo). No conozco ninguna forma de obtener una visión humana de los resolutores de contenido.

+0

¿Por qué necesito acceso de raíz? Quiero acceder a mis datos de aplicaciones, ya que soy el desarrollador Me gustaría tener acceso a él. – Pentium10

+0

adbd no se puede ejecutar como raíz en las compilaciones de producción – Pentium10

+4

Agregue una función de exportación o copia de seguridad a su aplicación que copie la base de datos a la tarjeta SD. – CommonsWare

0

Tiene que ser root para acceder a cualquier archivo de base de datos. Por lo tanto, puede obtener la raíz en su teléfono (buscar información en Google) o depurar la base de datos solo desde el emulador (lo que siempre le da acceso a la raíz).

¡Adiós!

+0

Desafortunadamente no puedo depurar desde Emulator la base de datos ya que el emulador no tiene las aplicaciones que estoy usando (Agenda, Bluetooth, Wifi). – Pentium10

+0

Pero puede instalar esas aplicaciones en el emulador: adb install appname.apk De todos modos, le recomiendo que rootee su teléfono :) http://www.google.com.co/search?q=root+android – Cristian

16

Comprobar el estado de respuesta del siguiente hilo: Why do I get access denied to data folder when using adb?

A partir de API de nivel 8 (Android 2.2), si se construye la aplicación como depurable, puede utilizar la cáscara run-as comando para ejecutar un comando o archivo ejecutable como un usuario/aplicación específico o simplemente cambie al UID de su aplicación para que pueda acceder a su directorio data.

Así que, básicamente, tendrá que hacer una versión de depuración (que se hace automatically cada vez que inicie la aplicación desde el Android Studio a menos que solicite la versión de lanzamiento) y ejecute los siguientes comandos:

run-as com.mycompck 
cd /data/data/com.mycompck/databases 
ls 
sqlite3 ./yourdatabase.db 

Sin embargo, tenga en cuenta que el número sqlite3 binario no está presente por defecto en muchos teléfonos. Por lo tanto usted quizás tenga que descargar en alguna parte (por ejemplo, de archivos SuperOneClick en http://shortfuse.org/), guardar en la tarjeta SD y hacerlo ejecutable (que es un poco difícil sin embargo), por ejemplo:

run-as com.mycompck 
cd /data/data/com.mycompck/ 
cat /sdcard/sqlite3 >./sqlite3 
chmod 744 ./sqlite3 
./sqlite3 ./databases/yourdatabase.db 
+0

Así que usted ' volver a copiar sqlite3 en el directorio de la aplicación y luego cambiar los permisos a ejecutable. Supongo que esto significará que una copia de sqlite3 vivirá en ese directorio hasta que la aplicación se elimine del teléfono. Entonces mi pregunta es: ¿la reinstalación de la aplicación elimina el ejecutable (por ejemplo, haciendo clic en RUN en Eclipse)? – styfle

+1

@styfle La base de datos de la aplicación y las preferencias compartidas no se eliminan al hacer clic en "Ejecutar" en Eclipse, ¿o sí? Lo mismo ocurre con el ejecutable sqlite3. Solo 'adb uninstall' (sin la opción' -k') lo eliminará (o la desinstalación manual de la aplicación a través del Administrador de aplicaciones del dispositivo). – Idolon

+0

¿Debo hacer algo en Idea13CE (edición de comunidad) para asegurarme de que está haciendo una compilación de depuración? – Rupert

0

La mejor manera de para ver y administrar su base de datos de aplicaciones de Android es usar esta biblioteca https://github.com/sanathp/DatabaseManager_For_Android

Es un solo archivo de actividad java, simplemente agregue el archivo java a su carpeta de origen puede ver las tablas en la base de datos de su aplicación, actualizar, eliminar, insertar filas a tu mesa. Todo desde tu aplicación.

Cuando se completa el desarrollo, elimine el archivo java de su carpeta src, eso es todo.

Me ayudó mucho. Espero que te ayude también.

Puede ver la Demo 1 minuto aquí: http://youtu.be/P5vpaGoBlBY

-1

He leído sobre esto un poco y tener acceso a los archivos de base de datos para el móvil parece bastante de una molestia.

Echa un vistazo a esto. con esto puede ver su base de datos dentro de su aplicación. Database Manager

Para mí, esto funcionó bien. También depende de lo que planeas hacer por supuesto.

Espero que ayude.

+0

Si bien este enlace puede responder la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. - [De la crítica] (/ review/low-quality-posts/16161779) –

+0

buen punto. pero aún así, es una excelente forma de administrar tus bases de datos móviles – Feddex

Cuestiones relacionadas