Estoy tratando de encontrar la base de datos sqlite utilizada por MediaStore. Por lo que yo entiendo, MediaStore contiene, entre otras, las listas de reproducción definidas en la aplicación de música predeterminada. De hecho, me gustaría duplicar una lista de reproducción, pero la aplicación no permite eso. De alguna manera pensé que podría arreglar esto si pudiera encontrar el archivo db real. Pero me desvié por completo ahora, porque no puedo encontrar el db. Por cierto, estoy ejecutando FroYo.Android MediaStore sqlite db location
Respuesta
La forma correcta de hacerlo es usar content provider para consultar media store y realizar cualquier tipo de modificación en las tablas desde allí.
Ejemplo rápido de cómo consultaría a todos los artistas en MediaStore.
String[] proj = { MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Artists.ARTIST };
//managed query doesn't need startManagingCursor called on the cursor
Cursor c = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
proj, null, null, null);
Tener un vistazo a la Android source the class we're interested in seems to be android.provider.MediaStore
y allí, el método getDatabaseForUri()
parece generar una base de datos diferente para cada tarjeta de almacenamiento externo y uno llamado internal.db
.
Así que creo que el archivo que le interesa es:
/data/data/com.android.providers.media/databases/internal.db
Sin embargo, mi copia de la base de datos no tienen la tabla de audio_playlists
utilizado en la fuente de Java así que no estoy seguro de que esto es derecho.
¿Cómo se accede a los datos en/data? Estoy usando ASTRO para navegar por los datos en mi teléfono , pero/datos están vacíos. No estoy seguro de si esto es porque el directorio está realmente vacío o debido a la configuración de permisos. – Hardy
'/ data' es propiedad de' root' por lo que no podrá explorarlo con ASTRO en un teléfono sin rootear. Intente conectar su teléfono a su PC de desarrollo y usar 'adb shell'. Creo que esto funciona con permisos de raíz en todos los teléfonos pero no tengo un teléfono sin rootear conmigo para verificar esto. –
Gracias por la información. Eso ayuda mucho y explica también por qué me costó tanto encontrar este archivo. Desafortunadamente, 'adb shell' no parece ejecutarse como root en un teléfono no rooteado :(¡Qué difícil puede ser !? – Hardy
la ubicación es:
/data/data/com.android.providers.media/databases/internal.db
audio_playlists no en las tablas, se puede ver en las vistas. herramienta sql es: sqliteman, ubuntu13.10
- 1. Android SQLite DB Cuándo cerrar
- 2. ¿Cómo puedo actualizar MediaStore en Android?
- 3. DB Sqlite con Android algunas preguntas básicas
- 4. Android AsyncTask y SQLite DB instancia
- 5. Location Alarm para Android?
- 6. Android GEO Location Tutorial
- 7. Python Berkeley DB/Sqlite
- 8. crear nueva sqlite Db
- 9. debug android: connect to sqlite db en el teléfono
- 10. Android SQLite SQLiteOpenHelper IllegalStateException - DB ya error cerrado
- 11. Mejores prácticas para SQLite DB y ContentProvider
- 12. Packaging SQLite DB con mi aplicación
- 13. Sincronizar SQLite DB en la aplicación de Android con el MySQL DB
- 14. Android SQLite filtró
- 15. Android MediaStore obtiene distintas carpetas de archivos de música
- 16. Android: CursorLoader, LoaderManager, SQLite
- 17. leer el archivo db SQLite usando java
- 18. ¿Cómo usar SQLite DB de AsyncTask?
- 19. create sqlite db programmatically en iphone sdk
- 20. Información segura contenida en iPhone SQLite DB
- 21. Exportar sqlite db en la aplicación phonegap
- 22. Cómo VACUUM un Core Data SQLite db?
- 23. android sqlite sincronización bidireccional sqlite
- 24. inspeccionando android sqlite e IntelliJ
- 25. Usando en-memoria sqlite android
- 26. Restablecimiento Autoincrement en Android SQLite
- 27. Android Location API: obtenga el estado del proveedor
- 28. Nginx location priority
- 29. nginx location regex
- 30. .NET Framework documentation location
Derecha. Esa es la forma programática. Supongo que, en este caso, podría obtener el código del reproductor de música en primer lugar y agregar una función de lista de reproducción duplicada. Mi punto, sin embargo, fue que quería hacer un hack rápido, editando la base de datos sqlite directamente usando cualquier GUI de sqlite. Me pregunto qué archivo contiene el db? – Hardy
Ah veo, usted no mencionó que quería usar una GUI sqlite para hacer esto. Bueno, siempre y cuando tengas un teléfono rooteado no deberías tener problemas para tirar de la base de datos. Voy a investigar su ubicación y contactarte. – smith324
¿Encontró la ubicación del db. Realmente no puedo encontrarlo :( – Hardy