2011-05-29 26 views
9

Hola Tengo algunos problemas para crear la base de datos sqlite en android.Permiso de Android para crear la base de datos

Todo está bien en el emulador, puedo crear la base de datos. Pero no funciona en la máquina en realidad. Cuando intenté depurar la aplicación en mi teléfono, simplemente no se pudo crear la base de datos.

Entonces, ¿alguien puede contarme lo que sucedió? ¿Hay algún permiso especial que deba agregar en el archivo Manifest? He intentado ACCESS_CHECKIN_PROPERTIES o WRITE_EXTERNAL_STORAGE, pero todavía no puedo obtener la base de datos.

Por cierto, ¿la base de datos personalizada solo puede almacenarse en la tarjeta sd pero en el directorio raíz?

Muchas gracias !!

+2

Lea el logcat. Te dirá cuál es el problema. – Aleadam

+0

Esta aplicación de muestra demuestra que se trabaja con una base de datos, y funciona en emuladores y dispositivos: https://github.com/commonsguy/cw-android/tree/master/Database/Constants – CommonsWare

+0

Muchas gracias a todos. Ya lo he resuelto. El problema es que el emulador no requiere la extensión de ".db" mientras que el teléfono real sí lo requiere. – 4af2e9eb6

Respuesta

13

Sin comentarios en el error, es imposible decirle qué hay de malo en su código. Sin embargo, puedo decirle que lo hace no necesita ACCESS_CHECKIN_PROPERTIES para usar su propia base de datos. No debería necesitar WRITE_EXTERNAL_STORAGE, a menos que intente acceder a la tarjeta SD.

Las bases de datos se almacenan de forma predeterminada en una subcarpeta de la carpeta de aplicación en el almacenamiento interno, es decir .:

/data/data/YOUR_APP/databases/YOUR_DATABASAE.db 

Si lo hace en un dispositivo físico que tiene que tener sus raíces sin embargo.

+0

@Aleadam Gracias, Aleadam. Ni el permiso funciona aquí. El problema es que sin estos permisos en el emulador, puedo crear la base de datos y obtener el registro usando el cursor. Simplemente no puedo hacerlo en mi teléfono. ¿Podrías decirme por qué? – 4af2e9eb6

+0

@Kitten no, no puedo. Por la misma razón que ayer: ** necesita leer el logcat **. Consulte http://developer.android.com/guide/developing/tools/logcat.html o consulte la perspectiva de depuración en Eclipse. – Aleadam

+0

@Aleadam ¡Gracias de todos modos! ¡¡Que tengas un buen día!! – 4af2e9eb6

2

Tuve exactamente el mismo problema. Mi aplicación crearía un db en el emulador, leer y escribir datos, pero se bloqueó cuando estaba en el dispositivo.

Encontré una solución muy simple para esto: borre la base de datos en su dispositivo manualmente en /data/data/YOUR_APP/databases/YOUR_DATABASAE.db y luego vuelva a ejecutar su aplicación.

Funcionado en mi caso, espero que ayude.

1

Quizás tenga este problema porque tiene una versión previa de su aplicación instalada en su teléfono. Antes de instalar la nueva versión, intente desinstalar la anterior con "Administrador de aplicaciones". Resuelvo de esta manera.

1

Es muy fácil de resolver Debe no ha añadido extensión .db en su nombre de la base declarada en el fichero db java Por ejemplo, public static final String DB_NAME = "tasks.db";

no se olvide el EXTENSIÓN .db

+0

No importa. El nombre de la base de datos puede ser casi cualquier cosa. – laalto

+0

Me funcionó. –

0

en el primero verifico los permisos y el tiempo de ejecución obtuve permiso, pero dado que targetSdkVersion era 25, el problema no se resolvió, funciona con db sin usar EXTENSIÓN de .db siempre será bueno y funcionó, pero parece que targetSdkVersion de 25 necesita la EXTENSIÓN de .db y mi problema fue resuelto.

Cuestiones relacionadas