onActivityResult是如何使用的?

时间:2012-04-08 16:29:28

标签: android android-intent media

以下是我的代码:

    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。

3 个答案:

答案 0 :(得分:0)

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

使用以下代码并尝试:::

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

你可以用这个uri做任何事情(可以设置为imageview或将其转换为位图)。

答案 1 :(得分:0)

只要在子活动中出现问题,

结果代码就是result_cancelled。否则result_ok代码就在那里。

请参阅Get/pick an image from Android's built-in Gallery app programmatically以查看正确的工作示例......

答案 2 :(得分:0)

默认情况下,如果未在intent中指定返回结果代码,则gallery不会返回结果代码。您可以在意图中指定返回结果代码,方法是在代码中添加以下代码:

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