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.

questionAnswers(2)

yourAnswerToTheQuestion