¿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 SQL Lite no crece
  • Mantener los datos SQLite después de la actualización
  • Cómo importar la biblioteca Persistence Room a un proyecto de Android
  • SQLiteException "no puede confirmar - ninguna transacción está activa" al insertar con CONFLICT_REPLACE
  • ORMLite insertar o reemplazar
  • SQLite de Android CursorIndexOutOfBounds
  • Usando la función strftime de sqlite en android
  • Prácticas recomendadas para exponer varias tablas mediante proveedores de contenido en Android
  • La base de datos SQLite de Android se corrompe
  • Ejemplo de Android SQLite
  • Datos de SQLite a un RecyclerView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.