Android MediaStore sqlite db ubicación
Estoy tratando de encontrar la base de datos sqlite utilizada por el MediaStore. Por lo que yo entiendo, MediaStore contiene, entre otras, las listas de reproducción definidas en la aplicación de música predeterminada. En realidad, me gustaría duplicar una lista de reproducción, pero la aplicación no lo permite. De alguna manera pensé que podría arreglar esto si sólo podría encontrar el archivo db real. Pero me desvié completamente ahora, porque no puedo encontrar el db. Por cierto, estoy corriendo FroYo.
- Cómo obtener datos de MediaStore.File y MediaStore.File.FileColumn
- Problema duplicado de Android thumbnail
- Obtener nombre de archivo y ruta de URI de mediastore
- Archivos no eliminados al borrar y aún mostrados en Listview
- Diferencia entre MICRO_KIND y MINI_KIND en mediastore en android?
- ¿Cómo consultar canciones en listas de reproducción en Android SDK?
- Mediastore para Android: ¿Cómo recuperar de forma eficiente todas las canciones de un determinado género?
- ¿Cómo puedo mostrar una carpeta específica en Android Gallery3D (cooliris)?
- MediaStore.Images.Media.insertImage devuelve null al intentar guardar la imagen
- MediaStore.Images.Thumbnails.getThumbnail devuelve una miniatura incorrecta en lugar de NULL
- cómo obtener todos los archivos de audio de la tarjeta sd Android
- Establecer recurso sin formato como tono de llamada en Android
- Inserción de un vídeo en MediaStore
Al ver la fuente de Android, la clase en la que estamos interesados parece ser android.provider.MediaStore
y allí, el método getDatabaseForUri()
parece generar una base de datos diferente para cada tarjeta de almacenamiento externa y una llamada internal.db
.
Así que creo que el archivo que te interesa es:
/data/data/com.android.providers.media/databases/internal.db
Sin embargo, mi copia de esa base de datos no tiene la tabla de audio_playlists
utilizada en el origen de Java, así que no estoy seguro de que esto sea correcto.
La forma correcta de hacerlo es utilizar el proveedor de contenido para consultar el almacén de medios y realizar cualquier tipo de modificación en las tablas desde allí.
Ejemplo rápido de cómo consultar a todos los artistas en el 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);
La ubicación es:
/data/data/com.android.providers.media/databases/internal.db
Audio_playlists no en Tablas, puedes verlo en Vistas. La herramienta sql es: sqliteman, ubuntu13.10