¿Es posible hacer una consulta sin procesar en la base de datos de metales de Android de meta sqlite?

Estoy escribiendo una pequeña aplicación para reproducir música. Mi objetivo es Android API de nivel 7 y superior.

La aplicación sólo debe listar y reproducir música que ha sido etiquetada con un conjunto específico de géneros elegidos por el usuario a través de las preferencias, por ejemplo, "Pop", "Rock", "Hillbilly".

En este momento estoy tratando de encontrar una manera eficiente de encontrar todos los álbumes ids y nombres de álbumes que contienen pistas que están marcados con los géneros elegidos.

Esto es fácil en SQL. El teléfono almacena los metadatos de medios en una base de datos sqlite. Lo he encontrado en la memoria interna del teléfono, lo copió a través de adb y probado algunas consultas sqlite en él. La consulta resultante es un SQL de una línea con una cadena de uniones y funciona bien.

Esto parece ser más difícil en Java con el SDK de Android, al menos con API de nivel 7 y superior. Puedo usar managedQuery en el MediaStore para hacer alguna sintaxis SQL limitada en esa misma base de datos subyacente, pero si entiendo las cosas correctamente no hay JOIN y no DISTINCT cuando se usa esta API.

También puede haber pasado por alto esto, pero MediaStore me permite buscar todas las pistas de un género, pero no para todas las pistas de varios géneros en una sola consulta.

Así que todo esto tiene un poco de trabajo manual en java. El programa ahora tiene que hacer varias llamadas de managedQuery () para cada género y el programa tiene que unir los resultados y hacerlos distintos con java, fuera de sqlite (donde pertenece este trabajo).

¿Es esto realmente cómo se tiene que hacer? ¿No hay manera de enviar una consulta sin formato al archivo de base de datos sqlite?

¡Gracias!

No, usted no puede acceder directamente a la estructura subyacente de la base de datos – de hecho no tiene forma de conocer la estructura real de la base de datos, ha cambiado en las versiones de la plataforma. Las únicas consultas directas que puede hacer son las que se proporcionan a través del protocolo MediaStore del proveedor de contenido.

  • Android actualización SQLite DB esquema?
  • DB de SQLite accedido desde múltiples subprocesos
  • ¿Cuál es el modo de subprocesamiento predeterminado de SQLite en Android?
  • Android SQLite select * de la tabla donde nombre como% key% usando instrucciones preparadas
  • Android - La mejor manera de sincronizar SQLite con MySQL
  • Contexto de acceso en ContentProvider
  • Android: niveles de aislamiento de transacciones SQLite (ORMLite)
  • ¿El cursor permanecerá vivo después de cerrar la base de datos?
  • SQLiteDiskIOException: error de E / S de disco (código 3850)
  • Compartir base de datos SQLite entre 2 aplicaciones de Android?
  • Recuperar una lista de todas las tablas de la base de datos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.