Cómo obtener una lista de reproductores multimedia instalados

En mi aplicación tengo un elemento de menú que quiero abrir el reproductor multimedia preferido del usuario, solo interesado en el audio. Idealmente, la primera vez que el usuario elige este elemento, elegiría el único reproductor multimedia en el teléfono si solo tiene uno instalado, o le presentaría una lista si tiene más de uno. Entonces ahorraría su elección, así que la próxima vez abriría esa.

Según tengo entendido, Android no tiene reproductor multimedia predeterminado. Tengo el Droid original y tiene un reproductor multimedia, pero entiendo que otros operadores usan el suyo, o el usuario puede desinstalar el estándar.

He intentado algunas cosas pero no puedo hacer que nada funcione.

Intenté este código, que se supone que obtiene una lista de paquetes que respaldan la intención. Funciona para algunas cosas como "application / pdf" y "video / *". Cuando lo intento con "audio / *" obtengo una lista vacía, a pesar de que tengo instalado el reproductor multimedia Android y MixZing. También lo probé con "media / *" y no obtuve nada.

PackageManager packageManager = getPackageManager();
Intent testIntent = new Intent(Intent.ACTION_VIEW);
testIntent.setType("audio/*");
List list = packageManager.queryIntentActivities(testIntent, 0);

He visto este código que funciona y abre un archivo de audio con el reproductor predeterminado, sin embargo, no quiero abrir un archivo, solo quiero abrir la aplicación de audio como si el usuario la abriera desde el cajón de aplicaciones.

Intent i = new Intent(Intent.ACTION_VIEW);
Uri u = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI,"1"); 
i.setData(u); 
startActivity(i); 

Lo único que puedo pensar es salir y obtener los nombres de los paquetes de los reproductores multimedia más populares y codificarlos y buscar en el teléfono para ver cuáles están instalados, pero este no parece ser el mejor enfoque. No entiendo por qué el primer fragmento de código no funciona. Tal vez los filtros de intención no están configurados correctamente para esas aplicaciones o estoy usando el código incorrecto o los tipos MIME.

Respuestas a la pregunta(6)

Su respuesta a la pregunta