http://developer.android.com/guide/topics/providers/document-provider.html声明:
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时会显示两次。这是由于文件选择UI同时显示文档提供程序和ACTION_GET_CONTENT匹配器(后者在分隔器下面显示)。
是否有可能避免这种重复显示的应用程序,以避免混淆用户?
有关此问题的示例,请参见下面的屏幕截图和显示两次的Box条目:

发布于 2016-04-22 00:53:32
在支持运行Android4.3及更低部分的设备的同一页上稍微向下一点
ACTION_OPEN_DOCUMENT意图仅适用于运行Android4.4及更高版本的设备。如果您希望应用程序支持ACTION_GET_CONTENT以适应运行Android4.3和更低版本的设备,您应该在清单中禁用运行Android4.4或更高版本的设备的ACTION_GET_CONTENT意图筛选器。文档提供程序和ACTION_GET_CONTENT应该被视为互斥的。如果您同时支持它们,您的应用程序将在系统选择器UI中出现两次,提供两种访问存储数据的不同方式。这将使用户感到困惑。
您所提到的部分是在客户端--连接到您的DocumentsProvider的应用程序可以同时使用ACTION_GET_CONTENT和ACTION_OPEN_DOCUMENT,因此您不再需要在Android4.4和更高版本的设备上使用ACTION_GET_CONTENT意图过滤器或活动。
他们建议基于版本代码(即在values-v19中)创建values-v19资源,这将允许您更改Manifest中的android:enabled值、禁用或启用基于Android的组件。
https://stackoverflow.com/questions/36782844
复制相似问题