0

我要求来自画廊应用程序的图像:

Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);

我正在阅读这样的结果:

ClipData clipData = data.getClipData();
Uri[] uris = new Uri[clipData.getItemCount()];
for (int i = 0; i < uris.length; i++) {
  uris[i] = clipData.getItemAt(i).getUri();
}

我注意到,当我使用 Google Photos 作为图库时,结果以与我在 Google Photos 的 ui 中选择的相反的顺序返回。

这是有意的、一致的还是在任何地方记录的?

4

1 回答 1

1

首先,ACTION_PICK是错误的Intent动作。如果您阅读的文档ACTION_PICK,那是从特定集合中挑选内容;MIME 类型不是记录的输入值之一。ACTION_GET_CONTENT用于根据 MIME 类型选择内容。

其次,请注意,EXTRA_ALLOW_MULTIPLE它与ACTION_GET_CONTENTandACTION_OPEN_DOCUMENT一起使用。因此,很少有ACTION_PICK实现会尊重这一点。

第三,UriEXTRA_ALLOW_MULTIPLE请求返回的值没有任何特定顺序的要求。有数以千计的可能的应用程序会响应您的请求,它们可以按照他们希望的任何顺序向您发送结果。特别是,文档EXTRA_ALLOW_MULTIPLE没有解决订单。

如果订单在您的应用中很重要,请构建您自己的 UI 来确认订单。提供方便的一键式“反向”选项,此外还可以拖放以允许任意更改。毕竟,在内容选择过程中,用户可能没有意识到顺序很重要,因此即使用户选择内容的顺序也不是用户实际期望的顺序。

于 2016-06-05T10:59:46.703 回答