En mi aplicación, tengo un elemento de menú que me permite abrir el reproductor multimedia preferido del usuario, solo me interesa el audio. Idealmente, la primera vez que el usuario elija este elemento, elegiría el único reproductor multimedia en el teléfono si solo tiene uno instalado, o les presentará una lista si tienen más de uno. Entonces salvaría su elección así que la próxima vez abriría esa.Cómo obtener una lista de reproductores multimedia instalados
Según tengo entendido, Android no tiene un reproductor multimedia predeterminado. Tengo el Droid original y tiene un reproductor multimedia, pero entiendo que otros operadores usen el suyo propio, 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 debe obtener una lista de paquetes que admiten la intención. Funciona para algunas cosas como "aplicación/pdf" y "video/*". Cuando lo intento con "audio/*" obtengo una lista vacía, aunque tengo instalados tanto el reproductor multimedia original de Android como MixZing. También lo intenté 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 se abre un archivo de audio con el reproductor por defecto, sin embargo no quiero abrir un archivo, sólo quiero abrir la aplicación de audio como si el usuario lo abrió desde el cajón de la aplicación.
Intent i = new Intent(Intent.ACTION_VIEW);
Uri u = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI,"1");
i.setData(u);
startActivity(i);
La única otra cosa que puedo pensar que hacer es salir y conseguir los nombres de los paquetes de la reproductores multimedia y codificar los más populares y buscar en el teléfono para ver qué se instalan queridos, pero este doesn' Parece el mejor enfoque. No entiendo por qué el primer bit 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 de mime.
El segundo bit de código hace exactamente lo que quiere sobre el lanzamiento de la actividad. Me presenta una lista de aplicaciones en mi teléfono que puede manejar la intención. Simplemente no puedo encontrar una manera de generar esa lista yo solo para poder manipular las cosas. No quiero comenzar la actividad, solo obtengo los datos que usa el sistema operativo para generar esa lista. – Bob
Bien, creo que tengo esto funcionando. Publicaré la solución cuando lo obtenga. – Bob
Esto también podría funcionar para usted: http://stackoverflow.com/questions/18161237/list-installed-media-players-android/21658150#21658150 – yado