【问题标题】:Android Gallery always returns RESULT_CANCELED to onActivityResultAndroid Gallery 总是将 RESULT_CANCELED 返回到 onActivityResult
【发布时间】:2012-04-03 22:00:38
【问题描述】:

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

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

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 的内置图库中。在“Motorola Droid(2.3.4) , HTC EVO (2.3)”上也观察到了该错误。

请问,我怎样才能以适用于所有这些设备的方式从图库中获取图像路径?

【问题讨论】:

  • 似乎这是 Kindle Fire 中的一个错误。可能是 stackoverflow.com/questions/9951006/… 的副本
  • 我想你一定是对的。我确定我在几周前编写此代码时测试过,但最近失败了。

标签: android image android-intent gallery


【解决方案1】:

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

【讨论】:

  • 有趣的事实:如果您使用startActivityForResult(Intent.createChooser(intent, null), code),它甚至可以使用lauchMode="singleInstance" - 感谢您的提示!
【解决方案2】:

我认为,如果您未在返回结果代码的意图中指定,默认情况下图库不会返回结果代码。您可以通过在代码中添加此 sn-p 来指定返回结果代码的意图,如下所示:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-18
      • 1970-01-01
      • 1970-01-01
      • 2016-02-12
      • 2019-05-02
      • 2019-11-22
      • 1970-01-01
      相关资源
      最近更新 更多