Wie erstelle ich intent.setType für PDF-, XLSX- und TXT-Dateien für Android?
Lesezeit: 5 Minuten
Ich möchte nur PDF-, XLSX- und TXT-Dateien aus dem Speicher auswählen, aber intent.setType kann nur eine Datei ausführen (z. B. nur TXT-Dateien (oder nur PDF-Dateien). Ist es möglich, alle drei Dateien durch Codierung von intent.setType() abzurufen, und gibt es eine Möglichkeit, dies zu tun?
Hier ist ein Teil meines Codes.
private void showFileChooser() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("application/pdf");
intent.addCategory(Intent.CATEGORY_OPENABLE);
try {
startActivityForResult(
Intent.createChooser(intent, "Select txt file"),
0);
} catch (android.content.ActivityNotFoundException ex) {
// Potentially direct the user to the Market with a Dialog
}
}
Sie sollten sich stackoverflow.com/a/33117677/5597641 ansehen
– Dani Akash
24. Februar 2017 um 7:19 Uhr
Mögliches Duplikat der Vorgehensweise zum Auswählen einiger Dateitypen per Absicht in Android?
– Dani Akash
24. Februar 2017 um 7:30 Uhr
Zia
Der Weg von @Fatehali Asamadi ist in Ordnung, aber für eine angemessene Verwendung muss noch etwas hinzugefügt werden. Für Microsoft-Dokumente werden die Erweiterungen (.doc oder .docx), (.ppt oder .pptx) und (.xls oder .xlsx) verwendet. Um diese Erweiterungen zu unterstützen oder zu durchsuchen, müssen Sie weitere mimeTypes hinzufügen.
Verwenden Sie die folgende Methode, um Dokumente zu durchsuchen, in denen REQUEST_CODE_DOC requestCode für die @Override-Methode onActivityResult(final int requestCode, final int resultCode,final Intent data) ist.
Hier können Sie sich ein klares Konzept verschaffen und die erforderlichen mimeTypes hinzufügen
Während ich diesen Code verwende, kann ich keine Dokumente in der App sehen. Kannst du helfen
– Pawandeep
16. April 2019 um 17:36 Uhr
Meine App unterstützt Kitkat und höher. Daher verwende ich nur die erste Logikbedingung. Irgendwie wird jedoch alles angezeigt und nicht nur das Gewünschte. Ich bezweifle diese Zeile intent.setType(mimeTypes.length == 1 ? mimeTypes[0] : "*/*");. Wird dadurch nicht alles angezeigt?
– Yusril Maulidan Raji
12. September 2019 um 10:05 Uhr
Was ist der Zweck dieser Zeile? intent.setType(mimeTypes.length == 1 ? mimeTypes[0] : “/“);.
– moumenShobakey
9. Juni 2020 um 9:11 Uhr
Ich habe zu viel Zeit damit verbracht, nach dem docx-Mime-Typ „application/vnd.openxmlformats-officedocument.wordprocessingml.document“ zu suchen, den ich für den Parameter „allowedTypes“ von CrossFilePicker.Current.PickFile() benötigte. Danke 🙂
– chri3g91
1. Juli 2020 um 9:58
Verwenden Sie diesen Code, um den Mimetyp File file = new File(filePath) zu erkennen. String-Erweiterung = android.webkit.MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(file).toString()); String mimeType = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
Jedes Dokument wird als content://-URI dargestellt, der von einem unterstützt wird DocumentsProviderder als Stream mit geöffnet werden kann openFileDescriptor(Uri, String)oder abgefragt DocumentsContract.Document Metadaten.
Alle ausgewählten Dokumente werden mit dauerhaften Lese- und Schreibberechtigungen an die aufrufende Anwendung zurückgegeben. Wenn Sie den Zugriff auf die Dokumente über Geräteneustarts hinweg aufrechterhalten möchten, müssen Sie die persistenten Berechtigungen explizit übernehmen takePersistableUriPermission(Uri, int).
Aufrufer müssen die zulässigen Dokument-MIME-Typen angeben setType(String). Um beispielsweise Fotos auszuwählen, verwenden Sie image/*. Wenn mehrere disjunkte MIME-Typen akzeptabel sind, definieren Sie sie in EXTRA_MIME_TYPES Und setType(String) Zu */*.
Sie sollten sich stackoverflow.com/a/33117677/5597641 ansehen
– Dani Akash
24. Februar 2017 um 7:19 Uhr
Mögliches Duplikat der Vorgehensweise zum Auswählen einiger Dateitypen per Absicht in Android?
– Dani Akash
24. Februar 2017 um 7:30 Uhr