Intent.getData.getPath()返回null值

时间:2016-12-14 17:42:37

标签: android android-intent

我试图从我使用相机意图拍摄的拍摄图像中获取文件路径。拍摄照片并返回它工作正常,但是当我尝试通过从intent获取数据并获取其路径时在OnActivityResult方法中获取它的路径时,我收到以下错误:

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1888, result=-1, data=Intent { act=inline-data (has extras) }} to activity {com.package.app/com.package.app.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.List android.net.Uri.getPathSegments()' on a null object reference

正如我所说,拍照工作,甚至设法将其作为附件提交给邮件应用程序,没有任何问题,但是它的路径是一个问题。这是我的OnActivityResult方法的代码(我在TextView上放置一个setText()只是为了看看getPath()结果是什么样的):

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if(resultCode == RESULT_OK){

        if(requestCode == 1){

            imageUri = data.getData();


        }
    }
    if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {


        imageUri = data.getData();
        path = imageUri.getPath();
        tv = (TextView) findViewById(R.id.tvField);
        tv.setText(path);


    }
}

没有最后3行,它完美无瑕。错误指向该行:

path = imageUri.getPath();

感谢您事先对我的问题感兴趣。

这是“相机请求”的意图

ibCam= (ImageButton) findViewById(R.id.ibCam);

        ibCam.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                startActivityForResult(cameraIntent, CAMERA_REQUEST);

            }
        });

1 个答案:

答案 0 :(得分:0)

imageUri = data.getData();

ACTION_IMAGE_CAPTURE未返回Uri

根据您的ACTION_IMAGE_CAPTURE Intent,使用Bitmap photo=data.getParcelableExtra("data")检索您请求的缩略图大小的照片。