2

以下是我的代码:

    if(v.getId() == R.id.button2)
    {
        Intent wpIntent = new Intent();
        wpIntent.setType("image/*");
        wpIntent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(wpIntent, "Select Picture"), SELECT_PICTURE);
    }
}

public void onActivityResult(int resultCode, int requestCode, Intent data)
{
    if(resultCode == RESULT_OK)
    {
        if(requestCode == SELECT_PICTURE)
        {
            Uri selectedImage = data.getData();
            selectedImagePath = getPath(selectedImage);
            Toast.makeText(this, ""+selectedImagePath, Toast.LENGTH_SHORT).show();
        }
    }
}

private String getPath(Uri selectedImage)
{
    String[] proj = {MediaStore.Images.Media.DATA};
    cursor = managedQuery(selectedImage, proj, null, null, null);
    int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(columnIndex);
}

这张照片有什么问题?onActivityResult 中的 Toast 没有显示,这意味着这个东西不起作用。

我在这里做错了什么?

编辑:我添加了更多检查,结果发现 if(resultCode == RESULT_OK) 没有返回 true。为什么呢?

编辑 2这很奇怪。删除两个“if”语句使程序工作得很好。生成了正确的图像 Uri 并且整个事情工作得很好。我仍然不明白为什么“if”语句返回 false。

4

3 回答 3

0
Uri selectedImage = data.getData();
selectedImagePath = getPath(selectedImage);

Use the below code and try:::

Uri selectedImageuri = Uri.parse(data.getDataString());

you can do any thing with this uri(can set to imageview or convert it to bitmap).

于 2012-04-08T16:34:50.193 回答
0

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

Intent wpIntent = new Intent();
wpIntent.setType("image/*");
wpIntent.setAction(Intent.ACTION_GET_CONTENT);
wpIntent.putExtra("return-data", true); //added snippet
startActivityForResult(Intent.createChooser(wpIntent, "Select Picture"),SELECT_PICTURE);
于 2012-04-19T08:25:42.750 回答
0

每当子活动出现问题时,结果代码就是 result_cancelled。否则 result_ok 代码就在那里。

请参阅以编程方式从 Android 的内置图库应用程序中获取/选择图像以检查正确的工作示例...

于 2012-04-08T17:24:07.300 回答