繁体   English   中英

在OnActivityResult()中调用data.getData时出现NullPointerException?

[英]NullPointerException when calling data.getData inside OnActivityResult()?

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

`data.getdata` 

在Toast中,但App崩溃了。 我也试过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();
    }

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

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

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

编辑:使代码更精确,即在此提供精确的解决方案。

相机意图结果困难

看了一眼..

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

也可以使用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!";
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM