Lançando uma intenção de arquivo e tipo MIME?
Eu revi todas as perguntas semelhantes aqui, mas não posso, para a vida de mim, descobrir o que estou fazendo de errado.
Eu escrevi um aplicativo que tenta iniciar vários arquivos, uma espécie de navegador de arquivos. Quando um arquivo é clicado, ele tenta iniciar o programa com base em seu tipo MIME associado ou apresenta a caixa de diálogo "Escolher aplicativo para iniciar".
Aqui está o código que estou usando para iniciar:
File file = new File(app.mediaPath() + "/" +_mediaFiles.get(position));
Intent myIntent = new Intent(android.content.Intent.ACTION_VIEW);
String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(file).toString());
String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
myIntent.setDataAndType(Uri.fromFile(file),mimetype);
startActivity(myIntent);
Isso falha e gera o erro:
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=file:///file:/mnt/sdcard/roms/nes/Baseball_simulator.nes }
Agora, se eu instalar o Gerenciador de arquivos OI, por exemplo, ele é aberto em vez desse erro ser lançado e, em seguida, se eu clicar no mesmo arquivo de dentro dele, ele lança os diálogos approriate.
Eu notei que o tipo MIME para esse arquivo em particular falha, mas outros tipos de mime como.zip
retorne valores.
Estou faltando alguma coisa que quando o tipo MIME é nulo para chamar uma caixa de diálogo que permite ao usuário selecionar?
Eu tentei outras variações de iniciar o aplicativo, incluindo não definir o tipo MIME e usar apenas.setData
sem sucesso.
A ação que quero que aconteça é que um usuário clica em um arquivo, se ele estiver associado a um aplicativo que o aplicativo lança, se não, o usuário recebe a caixa de diálogo "Ação completa usando" com uma lista de aplicativos.
Obrigado por qualquer conselho.