当我在 Android 中的 Oppo(操作系统版本 7.1.1)上进行测试时,Intent.EXTRA_ALLOW_MULTIPLE 无法与 Intent.ACTION_PICK 一起使用

Zoh*_*Ali 4 android

我正在尝试在我的 Android 应用程序中添加多选图像功能。这就是我正在尝试做的事情

val gallery = Intent( Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI )
gallery.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
startActivityForResult(gallery, ACTION_REQUEST_GALLERY)
Run Code Online (Sandbox Code Playgroud)

在操作系统版本 9、10 的模拟器中,它工作得很好。但是当我在操作系统版本 7.1.1 的 Oppo F5 上测试它时,它不起作用。

但如果我添加gallery.setAction(Intent.ACTION_GET_CONTENT) ,那么我可以在所有设备上选择多个图像,但问题是这种方法以非常奇怪的方式显示图像,而且对用户不太友好。

任何帮助将不胜感激,谢谢

Com*_*are 5

但是当我在操作系统版本 7.1.1 的 Oppo F5 上测试它时,它不起作用。

ACTION_PICK没有文档支持EXTRA_ALLOW_MULTIPLE。具体来说:

因此,您不应该假设任何ACTION_PICK活动都会对您的额外费用做出任何反应EXTRA_ALLOW_MULTIPLE

这种方法以非常奇怪的方式显示图像,而且对用户不太友好。

Android 设备型号超过 26,000 种。将有数百种不同的预装应用程序ACTION_PICK可以满足ACTION_GET_CONTENT您的请求。他们中的任何一个如何呈现他们的 UI,以及他们中的任何一个如何对意外的额外内容做出反应,都取决于他们的开发人员,而不是你或我。你似乎认为这ACTION_PICK总是会产生一种形式的 UI; 这是不正确的。

任何帮助将不胜感激,谢谢

任何一个:

  • 使用ACTION_PICK并接受可能被忽视的事实EXTRA_ALLOW_MULTIPLE,或者

  • 使用ACTION_GET_CONTENT/ ACTION_OPEN_DOCUMENT,或

  • 直接使用MediaStoreAPI 并渲染您自己的图像选择器,或者

  • 使用实现图像选择器的几十个库之一