Es fällt mir schwer, den Unterschied zwischen ACTION_OPEN_DOCUMENT
und ACTION_GET_CONTENT
Intents zu verstehen, wenn sie zum Öffnen eines zu öffnenden Dokuments verwendet werden. Wenn ich Andriod vor KitKat unterstütze, welches ACTION_OPEN_DOCUMENT
nicht unterstützt, sollte ich mich einfach mit ACTION_GET_CONTENT
begnügen?Was ist der wirkliche Unterschied zwischen ACTION_GET_CONTENT und ACTION_OPEN_DOCUMENT?
Die documentation sagt dies:
ACTION_OPEN_DOCUMENT
ist kein Ersatz fürACTION_GET_CONTENT
sein soll. Das sollte Sie richtet sich nach den Bedürfnissen der Ihre App verwenden:
- Verwenden
ACTION_GET_CONTENT
, wenn Sie Ihre App einfach lesen wollen/Import Daten. Bei diesem Ansatz importiert die App eine Kopie der Daten, z. B. eine Bilddatei.- Verwenden Sie
ACTION_OPEN_DOCUMENT
, wenn Ihre App langfristigen, dauerhaften Zugriff auf Dokumente im Besitz eines Dokuments Provider haben soll. Ein Beispiel wäre eine Bildbearbeitungs-App, mit der Benutzer Bilder bearbeiten können, die in einem Dokumentanbieter gespeichert sind.
Nicht ACTION_GET_CONTENT
auch Dokument-Provider in KitKat verwenden? Was würde mich daran hindern, einen "langfristigen, dauerhaften Zugang" zu haben, und was genau bedeutet das?
Was ist im Grunde der Unterschied zwischen den folgenden zwei Schnipsel?
ACTION_GET_CONTENT
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
ACTION_OPEN_DOCUMENT
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.setType("*/*");
Meiner Erfahrung nach gibt es nie einen Auswahldialog. Die zwei Aktionen führen zu derselben Vollbild-Benutzeroberfläche. Es ist wie ein Datei-Explorer, aber Sie können auch eine linke Schublade voller App-Symbole herausziehen. Der einzige Unterschied bei der Verwendung jeder Aktion ist diese Liste von Apps auf der linken Seite. Wenn ich Bild-MIME-Typen übergebe, kann ich mit GET_CONTENT nicht nur meine Ordner wie Downloads erkunden, sondern habe auch einen Eintrag auf einer herausschiebbaren linken Schublade für Google Fotos, Dropbox usw. Wenn ich OPEN_DOCUMENT verwende, bekomme ich die exakt gleiche Benutzeroberfläche, Es gibt nur keine Apps in der linken Schublade, die bereit wären, mir andere Inhalte als Google Drive zu liefern. – Stephen
@Stephen: "Es gibt nie einen Auswahldialog" - "ACTION_GET_CONTENT" wird einen auf Android 4.3 und älter haben. "Der einzige Unterschied bei der Verwendung jeder Aktion ist diese Liste von Apps auf der linken Seite" - einige Apps unterstützen eine der Aktionen, andere unterstützen die andere. Im Idealfall würde eine App wie Dropbox "ACTION_OPEN_DOCUMENT" auf Android 4.4+ unterstützen und auf die Unterstützung von "ACTION_GET_CONTENT" auf Android 4.3 und niedriger zurückgreifen. – CommonsWare
Ich habe gerade meine Anwendung auf einem 4,3-Gerät installiert und Sie sind richtig! Ein "Picker" zeigte sich eher als die Schnittstelle vom Typ "Datei-Explorer". Danke für die Hilfe! Übrigens, liebe deine Bücher. Ich bin seit Jahren abonniert. – Stephen