4

我正在尝试拍照,然后通过调用获取文件路径:

Intent camera_intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(camera_intent, Static.TAKE_PICTURE);

然后:

case Static.TAKE_PICTURE:
if(resultCode == Activity.RESULT_OK){  
    if(data.getData() != null){
        Uri selectedImage = data.getData();
        String path = selectedImage.getPath();
        if(path.contains("images/media")){
            path = Static.getImageRealPathFromURI(getActivity().getBaseContext(),selectedImage);
        }
    }
}
break;

在 4.1.2 Galaxy S3 上工作正常,但在 4.2.2 Nexus 10 上每次都崩溃:

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=65642, result=-1, data=null} to activity {com.******.***/com.******.***.Main}: java.lang.NullPointerException

如果我尝试对视频做同样的事情:

Intent video_intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
startActivityForResult(video_intent, Static.RECORD_VIDEO);

工作正常。真的我不知道为什么。

4

1 回答 1

0

这对我有用:

photoFilePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + Static.genereateFileName() + ".jpg";  
File imageFile = new File(photoFilePath); 
Uri imageFileUri = Uri.fromFile(imageFile);

Intent camera_intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
camera_intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, imageFileUri); 
startActivityForResult(camera_intent, Static.TAKE_PICTURE);
于 2013-09-17T08:57:05.900 回答