Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android intent.getData()空指针异常_Java_Android - Fatal编程技术网

Java Android intent.getData()空指针异常

Java Android intent.getData()空指针异常,java,android,Java,Android,我有一个安卓应用程序可以启动智能手机摄像头 Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST ); 为了显示拍摄的照片,我使用了这段代码 @Override protected void onActivityResult(int requestCode, int re

我有一个安卓应用程序可以启动智能手机摄像头

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST );
为了显示拍摄的照片,我使用了这段代码

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    setImage=true;
    if (requestCode == CAMERA_PIC_REQUEST && resultCode == RESULT_OK) {
        if(data!=null)
        {
            ImageView image = (ImageView) findViewById(R.id.imagePreview);
            Bundle extras = data.getExtras();
             Bitmap mImageBitmap = (Bitmap) extras.get("data");
             image.setImageBitmap(mImageBitmap);
        }
   }
}
这工作得很好,但是如果我想获得拍摄的照片的路径,我必须使用
(intent)data.getData()
,但这会返回一个
null
值。我应该怎么做才能解决这个问题?

尝试以下方法:

编辑:

要获取图像的路径,请尝试以下代码:

uriselectedimage=data.getData();
字符串[]filePathColumn={MediaStore.Images.Media.DATA};
Cursor Cursor=getContentResolver().query(selectedImage,
filePathColumn,null,null,null);
cursor.moveToFirst();
int columnIndex=cursor.getColumnIndex(filePathColumn[0]);

String imagePath=cursor.getString(columnIndex) 试试这个,希望它能帮助你

Uri selectedImage = data.getData();
            String[] filePathColumn = { MediaStore.Images.Media.DATA };

            Cursor cursor = getContentResolver().query(selectedImage,
                    filePathColumn, null, null, null);
            cursor.moveToFirst();

            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            String picturePath = cursor.getString(columnIndex);
            cursor.close();

            String imageName = picturePath.substring(picturePath.lastIndexOf(
                    "/", picturePath.length()));

你试过了吗?
Bitmap mImageBitmap=(Bitmap)data.getExtras().get(“data”)可能重复,但我需要的是路径而不是位图….我已经有了正确的位图对象….@Waqas是的,但是data.getData()不起作用…我需要这个给你solution@Dennis:要获取图像的实际路径,您需要从
MediaStore
contentprovider查询
MediaStore.Images.Media.DATA
列,但我只需要图片的路径
     Uri selectedImage = data.getData();
        String[] filePathColumn = { MediaStore.Images.Media.DATA };
        Cursor cursor = getContentResolver().query(selectedImage,
                filePathColumn, null, null, null);
        cursor.moveToFirst();
        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        String imagePath = cursor.getString(columnIndex); <---- Here is your image path.
        cursor.close();
Uri selectedImage = data.getData();
            String[] filePathColumn = { MediaStore.Images.Media.DATA };

            Cursor cursor = getContentResolver().query(selectedImage,
                    filePathColumn, null, null, null);
            cursor.moveToFirst();

            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            String picturePath = cursor.getString(columnIndex);
            cursor.close();

            String imageName = picturePath.substring(picturePath.lastIndexOf(
                    "/", picturePath.length()));