Android Gallery始终将RESULT_CANCELED返回给onActivityResult

时间:2012-04-03 22:00:39

标签: android image android-intent gallery

首先,这不是经常发布的结果代码过早返回的问题。在这种情况下,只有在图库中选择了一个项目后才会返回它。

在我的测试用例中,我使用以下代码调用了Gallery:

Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent,  SELECT_PICTURE);

在onActivityResult中有:

if (resultCode == Activity.RESULT_OK) {
    if (requestCode == SELECT_PICTURE) {
        Uri selectedImageUri = data.getData();
        pathText.setText(selectedImageUri.getPath());
    }
} else {
    pathText.setText("Result not OK - code is " + resultCode);
}

pathText只是我放入的TextView,用于在测试用例中显示结果。在实际应用中,路径有不同的用途。

如果我使用ACTION_PICK而不是_GET_CONTENT,我会立即报告其他人的失败。清单中没有launchMode标签(某些帖子在该区域中提出了问题)。

也许这里有一个线索。在Toshiba Thrive上,使用图库,文件管理器或鱼碗照片库不会出现此错误。在Kindle Fire上,Quickoffice还能够正确返回图像路径。该错误仅在Kindle的内置Gallery中出现。这个漏洞也出现在“摩托罗拉Droid(2.3.4),HTC EVO(2.3)”上。

请问,如何以适用于所有这些设备的方式从图库中获取图像路径?

3 个答案:

答案 0 :(得分:1)

我认为,如果你没有在intent中指定返回结果代码,那么默认情况下gallery不会返回结果代码。您可以在意图中指定返回结果代码,方法是在代码中添加以下代码:

Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.putExtra("return-data", true); //added snippet
startActivityForResult(Intent.createChooser(intent, "Select Picture"),SELECT_PICTURE);

答案 1 :(得分:1)

当我设置launchMode =" singleInstance"时,我在我的一个活动中遇到了同样的问题。在该活动的清单中。删除该属性时,它可以正常工作。

答案 2 :(得分:0)

嗨,史蒂夫尝试这似乎适用于我的壁纸项目

Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent, "Select Picture"),SELECT_PICTURE);