Uruchamianie zamiaru dla typu pliku i MIME?

Przejrzałem wszystkie podobne pytania tutaj, ale nie mogę przez całe życie dowiedzieć się, co robię źle.

Napisałem aplikację, która próbuje uruchomić różne pliki, w rodzaju przeglądarki plików. Po kliknięciu pliku próbuje uruchomić program na podstawie powiązanego typu MIME lub wyświetla okno dialogowe „Wybierz aplikację do uruchomienia”.

Oto kod, którego używam do uruchomienia:

    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);

To zawiedzie i wygeneruje błąd:

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=file:///file:/mnt/sdcard/roms/nes/Baseball_simulator.nes }

Teraz, jeśli na przykład zainstaluję OI File Manager, otwiera się zamiast tego błędu, a następnie, jeśli kliknę ten sam plik w środku, uruchomi odpowiednie okna dialogowe.

Zauważyłem, że typ MIME dla tego konkretnego pliku zawodzi, ale inne typy MIME lubią.zip zwracaj wartości.

Czy brakuje mi czegoś, co gdy typ MIME ma wartość null, aby wywołać okno dialogowe, które pozwala użytkownikowi wybrać?

Próbowałem innych odmian uruchamiania aplikacji, w tym nie ustawiania typu MIME i tylko używania.setData bez powodzenia.

Działanie, które chcę wykonać, polega na tym, że użytkownik klika plik, jeśli jest powiązany z aplikacją uruchamianą przez aplikację, jeśli nie, użytkownik otrzymuje okno dialogowe „Wykonaj akcję za pomocą” z listą aplikacji.

Dzięki za każdą radę.

questionAnswers(2)

yourAnswerToTheQuestion