在android的存储访问框架中选择多个后,如何保持图像的顺序?
我正在使用android存储访问框架来上传我的图像选择器。这是我的密码在android的存储访问框架中选择多个后,如何保持图像的顺序?,android,storage-access-framework,Android,Storage Access Framework,我正在使用android存储访问框架来上传我的图像选择器。这是我的密码 Intent.createChooser(new Intent(Intent.ACTION_GET_CONTENT).setType("image/*"), "Choose an image"); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
Intent.createChooser(new
Intent(Intent.ACTION_GET_CONTENT).setType("image/*"), "Choose an image");
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
if (multiple) {
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
intent.putExtra(Intent.EXTRA_INDEX, 0);
}
调用onActivityResult时,请像下面那样解析它
final ClipData clipData = data.getClipData();
int takeFlags = data.getFlags();
takeFlags &= (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
for(int i = 0; i < clipData.getItemCount(); i++) {
ClipData.Item item = clipData.getItemAt(i);
Uri dataUri = item.getUri();
....
}
final ClipData ClipData=data.getClipData();
int takeFlags=data.getFlags();
takeFlags&=(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
对于(int i=0;i
问题是,当我选择多个图像时,顺序很奇怪。
如果我按顺序选择A、B、C和D,它将按顺序返回B、C、D、A。
我发现这是因为所选项目是按文档id排序的。
(例如,如果文档uri为content://com.android.providers.media.documents/document/image%3A10473,由“3A10473”订购)
存储访问框架总是这样工作的。无论用户按顺序选择什么,它都会返回按文档id排序的项目。在得到结果之前,我不知道文档id是什么
对我来说,保留选定项目的顺序非常重要。 我怎样才能做到这一点
谢谢。
intent.addFlags(intent.FLAG_GRANT_READ_URI_PERMISSION | intent.FLAG_GRANT_WRITE_URI_PERMISSION)代码>。去除没有道理。“对我来说,保留所选项目的顺序非常重要”——然后一次只要求一个。Storage Access Framework UI甚至不需要记住选择的顺序,更不用说让顺序影响返回给您的结果了。不允许多次选择。让他们逐一选择。或者做你自己的采摘器。顺便说一下:ACTION\u GET\u内容与存储访问框架无关。它也适用于旧的android版本。ACTION_OPEN_文档仅适用于SAF。“对我来说,保留所选项目的顺序非常重要”-这听起来像是极不可信的要求。为什么选择后要修改订单?为什么不让用户在以后的任何时候重新排序呢?@user1643723很简单。因为make用户不必每次选择多个时都重新排序。这很不舒服。