gpt4 book ai didi

android - onActivityResult 在使用 Intent.EXTRA_ALLOW_MULTIPLE 时得到 RESULT_CANCELLED

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:53:10 25 4
gpt4 key购买 nike

我的 Activity 中有以下按钮,可打开图库以选择单个或多个图像,在此下方是 OnActivityResult 函数,返回结果为 RESULT_CANCELLED 用于多张图片,RESULT_OK 用于单张图片。不知道为什么会这样。有人可以帮忙吗。

buttonGallery.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
intent.setType("image/*");
startActivityForResult(Intent.createChooser(intent,"Select Picture"), choose_picture);
//startActivity(intent);
}
});

//OnActivityResult for the above

public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == choose_picture) {
Uri imageUri = (Uri)data.getParcelableExtra(Intent.EXTRA_STREAM);
//Do something
}

我将 data.getData() 作为 null,将 data.getExtras() 作为 null .

有人可以指导我如何从上面的代码中获得所需的结果。我想要用户从图库中选择的所有图像的 URI

PS:它对单个图像工作正常,不知道为什么。

最佳答案

终于找到了解决办法。当使用 EXTRA_ALLOW_MULTIPLE 时,如果用户选择的内容不止一个,而不是在 intent.getExtra() 中返回,来自 intent 的数据会在ClipData,仅支持 SDK 版本 18 及更高版本。从那里,可以使用以下代码检索数据 ->

 if ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) 
&& (null == data.getData()))
{
ClipData clipdata = data.getClipData();
for (int i=0; i<clipdata.getItemCount();i++)
{
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), clipdata.getItemAt(i).getUri());
//DO something
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

我已经对 intent.getData() 进行了空检查,因为在单个图像的情况下,数据是在 intent.getData() 中接收的,而在多项选择的情况下,这将作为 null 接收。

因此,对于18以下的sdk版本,以及单选(不考虑sdk版本),可以通过以下方式简单地获取数据:

InputStream ist = this.getContentResolver()
.openInputStream(data.getData());
Bitmap bitmap = BitmapFactory.decodeStream(ist);

关于android - onActivityResult 在使用 Intent.EXTRA_ALLOW_MULTIPLE 时得到 RESULT_CANCELLED,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24433649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com