Ich möchte einen Intentchooser für Apps starten, die jede Art von Datei zurückgeben können
Derzeit verwende ich (den ich aus dem Android-E-Mail-Quellcode für Dateianhänge kopiert habe)
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
Intent i = Intent.createChooser(intent, "File");
startActivityForResult(i, CHOOSE_FILE_REQUESTCODE);
Auf meinem Galaxy S2 werden jedoch nur "Galerie" und "Musik-Player" angezeigt. Auf diesem Gerät befindet sich ein Datei-Explorer, der in der Liste angezeigt werden soll. Ich möchte auch, dass die Kamera-App in der Liste angezeigt wird, damit der Benutzer ein Bild aufnehmen und es über meine App senden kann. Wenn ich den Astro-Dateimanager installiere, reagiert er auch auf diese Absicht. Meine Kunden sind nur Besitzer von Galaxy SII und ich möchte sie nicht zwingen, den Astro-Dateimanager zu installieren, da sie bereits über einen einfachen, aber ausreichenden Dateimanager verfügen.
Irgendeine Idee, wie ich das erreichen könnte? Ich bin mir ziemlich sicher, dass der Standard-Dateimanager bereits in einem solchen Menü angezeigt wurde, um eine Datei auszuwählen, aber ich kann mich nicht erinnern, in welcher App.
quelle
Antworten:
Nicht für die Kamera, sondern für andere Dateien.
Auf meinem Gerät habe ich
ES File Explorer
installiert und das funktioniert einfach in meinem Fall ..quelle
onActivityResult()
- Sie könnenUri
von der Datei erhalten.PICKFILE_RESULT_CODE
sollte seinPICKFILE_REQUEST_CODE
.Der Samsung-Datei-Explorer benötigt nicht nur benutzerdefinierte Aktionen ( com.sec.android.app.myfiles.PICK_DATA ), sondern auch Kategorieteile (Intent. CATEGORY_DEFAULT ) und MIME-Typ sollten als Extra übergeben werden.
Sie können diese Aktion auch zum Öffnen mehrerer Dateien verwenden: com.sec.android.app.myfiles.PICK_DATA_MULTIPLE Hier ist meine Lösung, die auf Samsung und anderen Geräten funktioniert:
Diese Lösung funktioniert gut für mich und ist möglicherweise für jemand anderen nützlich.
quelle
Diese Arbeit für mich auf Galaxie beachten Sie seine Show-Kontakte, Dateimanager auf Gerät, Galerie, Musik-Player installiert
Hier erhalten Sie einen Weg in die
onActivityResult
Aktivität.quelle
Das gibt mir das beste Ergebnis:
quelle
Es stellt sich heraus, dass der Samsung-Datei-Explorer eine benutzerdefinierte Aktion verwendet. Aus diesem Grund konnte ich den Samsung-Datei-Explorer sehen, wenn ich nach einer Datei aus den Samsung-Apps suchte, aber nicht aus meiner.
Die Aktion lautet "com.sec.android.app.myfiles.PICK_DATA".
Ich habe eine benutzerdefinierte Aktivitätsauswahl erstellt, die Aktivitäten anzeigt, die beide Absichten filtern.
quelle
Wenn Sie dies wissen möchten, gibt es eine Open-Source-Bibliothek namens aFileDialog , die klein und einfach zu verwenden ist und eine Dateiauswahl bietet.
Der Unterschied zu den Bibliotheken einer anderen Dateiauswahl für Android besteht darin, dass Sie mit aFileDialog die Option haben, die Dateiauswahl als Dialog und als Aktivität zu öffnen.
Außerdem können Sie Ordner auswählen, Dateien erstellen, Dateien mit regulären Ausdrücken filtern und Bestätigungsdialoge anzeigen.
quelle
Die anderen Antworten sind nicht falsch. Jetzt gibt es jedoch mehr Optionen zum Öffnen von Dateien. Wenn Sie beispielsweise möchten, dass die App langfristig dauerhaft auf eine Datei zugreift, können Sie sie
ACTION_OPEN_DOCUMENT
stattdessen verwenden. Weitere Informationen finden Sie in der offiziellen Dokumentation: Öffnen Sie Dateien mit dem Storage Access Framework . Beziehen Sie sich auch auf diese Antwort .quelle