Android - 无法在4.2.2版本上从相机意图中获取图像

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);

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


提供完整的错误跟踪。您是否在捕获图像之前观察到崩溃,即在捕获意图的加载时或在捕获图像后。 - CRUSADER
应用程序在尝试从相机意图返回时崩溃。结果中只有空数据。 - goodm
看一下这个:https://dev59.com/zWox5IYBdhLWcg3wvW3X#11351580 - CRUSADER
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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接