在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);

我正在使用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);

    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用户不必每次选择多个时都重新排序。这很不舒服。