Ich habe alle ähnlichen Fragen hier überprüft, aber ich kann nicht für das Leben von mir herausfinden, was ich falsch mache.Starten einer Absicht für Datei und MIME-Typ?
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 der Dialog "Anwendungsauswahl zum Starten" angezeigt.
Hier ist der Code, den ich starten bin mit:
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 }
Nun, wenn ich OI File Manager zum Beispiel installieren, es öffnet sich statt dessen Fehler wird ausgelöst, und wenn ich dann auf die gleiche Datei klicke, werden die entsprechenden Dialoge gestartet.
Ich habe festgestellt, dass der MIME-Typ für diese bestimmte Datei fehlschlägt, aber andere Mime-Typen wie .zip
geben Werte zurück.
Fehle ich etwas, das, wenn der MIME-Typ null ist, einen Dialog aufzurufen, der den Benutzer auswählen lässt?
Ich habe andere Varianten des Startens der App ausprobiert, einschließlich der Einstellung des MIME-Typs und nur mit .setData
ohne Erfolg.
Die Aktion, die ich ausführen möchte, ist ein Benutzer klickt auf eine Datei, wenn es mit einer Anwendung verknüpft ist, die App startet, wenn nicht, erhält der Benutzer den Dialog "Aktion abschließen mit" mit einer Liste von Anwendungen.
Danke für jeden Hinweis.
was kommt in mimeype string ?? fügen Sie es hier ein –
Sieht aus, als ob es etwas ist, das eine zugeordnete Datei hat, ist es der richtige MIME-Typ, aber wenn es etwas ist, das nicht an eine App gebunden wurde, kommt es durch null .. – stonedonkey