Absicht für Datei und MIME-Typ starten?

Ich habe alle ähnlichen Fragen hier durchgesehen, aber ich kann für mein ganzes Leben nicht herausfinden, was ich falsch mache.

Ich habe eine Anwendung geschrieben, die versucht, verschiedene Dateien zu starten, eine Art Dateibrowser. Wenn auf eine Datei geklickt wird, wird versucht, das Programm basierend auf dem zugehörigen MIME-Typ zu starten, oder es wird das Dialogfeld "Zu startende Anwendung auswählen" angezeigt.

Hier ist der Code, den ich zum Starten verwende:

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

Dies schlägt fehl und erzeugt den Fehler:

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

Wenn ich nun beispielsweise den OI-Dateimanager installiere, wird dieser geöffnet, anstatt dass dieser Fehler ausgegeben wird. Wenn ich dann auf dieselbe Datei darin klicke, werden die entsprechenden Dialogfelder gestartet.

Ich habe festgestellt, dass der MIME-Typ für diese bestimmte Datei fehlschlägt, aber andere MIME-Typen wie.zip Rückgabewerte.

Fehlt mir etwas, das bei einem MIME-Typ von Null einen Dialog aufruft, den der Benutzer auswählen kann?

Ich habe andere Varianten des Startens der App ausprobiert, einschließlich des Nichteinstellens des MIME-Typs und der Verwendung von.setData ohne erfolg.

Die Aktion, die ich ausführen möchte, besteht darin, dass ein Benutzer auf eine Datei klickt, wenn diese mit einer Anwendung verknüpft ist, die von der App gestartet wird. Andernfalls erhält der Benutzer das Dialogfeld "Aktion abschließen mit" mit einer Liste von Apps.

Danke für jeden Rat.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage