0

http://developer.android.com/guide/topics/providers/document-provider.html Staaten unterstützt:Android: Vermeiden doppelter Eintrag, wenn beide ACTION_GET_CONTENT und ACTION_OPEN_DOCUMENT

ACTION_OPEN_DOCUMENT is not intended to be a replacement for ACTION_GET_CONTENT. 
The one you should use depends on the needs of your app: 

Use ACTION_GET_CONTENT if you want your app to simply read/import data. 
With this approach, the app imports a copy of the data, such as an image file. 
Use ACTION_OPEN_DOCUMENT if you want your app to have long term, persistent access 
to documents owned by a document provider. An example would be a 
photo-editing app that lets users edit images stored in a document provider. 

Dies zeigt, dass die meisten Anwendungen, die Dateien bietet sowohl Absicht Typen unterstützen soll.

Wenn eine App jedoch sowohl ACTION_GET_CONTENT unterstützt (indem sie eine Aktivität hat, die dem im Intent-Filter entspricht), als auch ACTION_OPEN_DOCUMENT (durch Implementieren eines Dokumentanbieters), wird sie zweimal angezeigt, wenn z. eine Datei an Gmail anhängen. Dies liegt an der Dateiauswahl-Benutzeroberfläche, die sowohl die Dokumentanbieter als auch die ACTION_GET_CONTENT Matcher zeigt (letzteres wird weiter unten unter einem Teiler gezeigt).

Ist es möglich, diese doppelte Anzeige einer App zu vermeiden, um die Benutzer zu verwirren?

Siehe unten stehende Screenshot und die Box Eintrag zweimal für ein Beispiel des Problems zeigt sich:

Screenshot showing duplicate entry in the Open from dialog

Antwort

1

Von etwas weiter unten auf dieser Seite auch in der Supporting devices running Android 4.3 and lower section:

Die ACTION_OPEN_DOCUMENT Intent ist nur auf Geräten mit Android 4.4 und höher verfügbar. Wenn Sie möchten, dass Ihre Anwendung ACTION_GET_CONTENT unterstützt, um Geräte mit Android 4.3 und niedriger zu unterstützen, sollten Sie in Ihrem Manifest den Filter "ACTION_GET_CONTENT Intent" für Geräte mit Android 4.4 oder höher deaktivieren. Ein Dokumentanbieter und ACTION_GET_CONTENT sollten als sich gegenseitig ausschließend betrachtet werden. Wenn Sie beide gleichzeitig unterstützen, wird Ihre App zweimal in der Benutzeroberfläche der Systemauswahl angezeigt und bietet zwei verschiedene Möglichkeiten für den Zugriff auf Ihre gespeicherten Daten. Dies wäre für die Benutzer verwirrend.

Der Abschnitt, den Sie beziehen sich auf die Client Seite - Anwendungen eine Verbindung zu Ihrem DocumentsProvider sowohl ACTION_GET_CONTENT und ACTION_OPEN_DOCUMENT verwenden können, so dass Sie nicht mehr benötigen, die ACTION_GET_CONTENT Intent-Filter oder Aktivität überhaupt auf Android 4.4 und höher Geräte.

Sie schlagen vor, die Schaffung bool Ressourcen basierend auf Versionscode (das heißt, in values-v19), dass Sie den android:enabled Wert im Manifest, Sperren oder Freigeben Komponenten basierend auf Android-Version zu ändern erlauben würde.

+0

Danke, verpasst das! Ich sehe jetzt, dass "ACTION_OPEN_DOCUMENT ist nicht beabsichtigt, ein Ersatz für ACTION_GET_CONTENT" im Kontext einer Client-App ist - für eine Provider-App jedoch ist dies der Fall. – fornwall