0

http://developer.android.com/guide/topics/providers/document-provider.html состояний:Android: Избегайте дублирования записи при поддержке как ACTION_GET_CONTENT и 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. 

Это показывает, что большинство приложений, что обеспечивает файлы должны поддерживать оба типа намерений.

Но когда приложение поддерживает как ACTION_GET_CONTENT (путем выполнения действия, соответствующего его фильтру намерения), так и ACTION_OPEN_DOCUMENT (путем внедрения поставщика документов), оно отображается дважды, например, прикрепляя файл к Gmail. Это связано с пользовательским интерфейсом выбора файлов, показывающим как поставщиков документов, так и ACTION_GET_CONTENT (последний показан ниже под разделителем).

Можно ли избежать дублирования показа приложения, чтобы избежать путаницы пользователей?

Смотрите скриншот ниже и поле ввода, показывая дважды для примера задачи:

Screenshot showing duplicate entry in the Open from dialog

ответ

1

С немного дальше вниз на той же странице в Supporting devices running Android 4.3 and lower section:

ACTION_OPEN_DOCUMENT намерение доступно только на устройствах под управлением Android 4.4 и выше. Если вы хотите, чтобы ваше приложение поддерживало ACTION_GET_CONTENT для размещения устройств под управлением Android 4.3 и ниже, вы должны отключить фильтр намерений ACTION_GET_CONTENT в манифесте для устройств под управлением Android 4.4 или выше. Поставщик документа и ACTION_GET_CONTENT должны считаться взаимоисключающими. Если вы поддерживаете оба из них одновременно, ваше приложение появится дважды в пользовательском интерфейсе выбора системы, предлагая два разных способа доступа к вашим сохраненным данным. Это будет путать пользователей.

В разделе вы ссылаетесь находится на клиента стороны - приложения не подключение к вашему DocumentsProvider можно использовать как ACTION_GET_CONTENT и ACTION_OPEN_DOCUMENT, так что вам больше не нужно ACTION_GET_CONTENT пристального фильтр или активность у всех на Android 4.4 и выше устройства.

Они предполагают создание bool ресурсов на основе версии кода (то есть, в values-v19), что позволит вам изменить значение android:enabled в манифесте, отключение или включение компонентов на основе Android версии.

+0

Спасибо, пропустили это! Теперь я вижу, что «ACTION_OPEN_DOCUMENT не предназначен для замены ACTION_GET_CONTENT» в контексте клиентского приложения - для приложения-поставщика, однако это так. – fornwall

 Смежные вопросы

  • Нет связанных вопросов^_^