Como obter uma lista de players de mídia instalados

No meu aplicativo, tenho um item de menu no qual desejo abrir o media player preferido do usuário, apenas interessado em áudio. Idealmente, na primeira vez em que o usuário escolher esse item, ele escolherá o único media player no telefone, se houver apenas um instalado, ou apresentará uma lista se houver mais de um. Eu, então, salvaria a escolha deles para que da próxima vez fosse aberto.

Pelo que entendi, o Android não possui um media player padrão. Eu tenho o Droid original e ele possui um media player, mas entendo que outras operadoras usam seus próprios ou o usuário pode desinstalar o padrão.

Eu tentei algumas coisas, mas não consigo fazer nada funcionar.

Eu tentei esse código, que deveria obter uma lista de pacotes que suportam a intenção. Funciona para algumas coisas como "application / pdf" e "video / *". Quando tento com "audio / *", recebo uma lista vazia, mesmo que eu tenha o media player Android e o MixZing instalados. Também tentei com "media / *" e não obtive nada.

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

Eu vi esse código que funciona e abre um arquivo de áudio com o player padrão; no entanto, não quero abrir um arquivo, só quero abrir o aplicativo de áudio como se o usuário o abrisse na gaveta do aplicativo.

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

A única outra coisa que posso pensar em fazer é buscar os nomes dos pacotes dos players de mídia mais populares, codificá-los com firmeza e pesquisar no telefone para ver quais estão instalados, mas essa não parece ser a melhor abordagem. Não entendo por que o primeiro bit de código não funciona. Talvez os filtros de intenção não estejam definidos corretamente para esses aplicativos ou estou usando o código ou os tipos MIME incorretos.

questionAnswers(6)

yourAnswerToTheQuestion