0

我正在尝试通过调用显示相机拍摄的已保存图片的路径

`data.getdata` 

在 Toast 中,但应用程序崩溃。我也试过data.getDataString但没有解决

任何事物。

代码:

@Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent imageIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            File imagesFolder = new File(Environment.getExternalStorageDirectory(), "My Images");
            imagesFolder.mkdirs();
            File image = new File(imagesFolder, "img01");
            Uri uriSavedImage = Uri.fromFile(image);
            imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
            startActivityForResult(imageIntent,CAMERA_REQUEST_CODE);
        }
    });
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if ((requestCode == CAMERA_REQUEST_CODE) && (resultCode == RESULT_OK)) {
        Toast.makeText(getApplicationContext(), "Image Saved To: "+data.getData(), Toast.LENGTH_SHORT).show();
    }
4

3 回答 3

1

从您的意图中获取额外的捆绑包,可以访问结果数据。

Bitmap thumbnail = (Bitmap) data.getExtras().get("data");

不要忘记空检查,因为我的印象是标签“数据”并非在所有手机上都有效。

编辑:使代码更精确,即在这里给出确切的解决方案。

于 2012-03-21T13:13:16.490 回答
1

相机意图结果问题

看过这个。。

你试过 data.getExtras().get(TAG); ?

于 2012-03-21T13:18:08.700 回答
0

还用,data.getData().toString()

data.getData().toString()应该管用。但是,它实际上不会为您提供存储图像的实际路径。它宁愿给你URI那个图像。您需要使用解析该uri。

public String getRealPathFromURI(String uriString) {
    try {
        String[] proj = { MediaStore.Image.Media.DATA};
        Log.d("First", proj[0]);
        Cursor cursor = managedQuery(Uri.parse(uriString), proj, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Image.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return "Alas!";
}
于 2012-03-21T13:19:05.283 回答