设置视频(MediaStore.EXTRA_OUTPUT,URI)的自定义位置时,onActivityResult崩溃

时间:2018-10-04 20:43:24

标签: output onactivityresult mediastore extra

这是我针对“意图”的设置:

Intent cameraACTION_VIDEO_CAPTURE = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);

tempUri = accessLocalStorage.getThisAppsStorageUriPath();

//Crashed for tempUri = "/data/user/0/hardy.android.go/app_files/test.mp4"
//Crashed for tempUri = "/data/user/0/hardy.android.go/app_files/"
cameraACTION_VIDEO_CAPTURE.putExtra(MediaStore.EXTRA_OUTPUT, tempUri);

cameraACTION_VIDEO_CAPTURE.setFlags(cameraACTION_VIDEO_CAPTURE.getFlags() | Intent.FLAG_ACTIVITY_NO_HISTORY);

startActivityForResult(cameraACTION_VIDEO_CAPTURE, 
Integer.parseInt( DataModel.SETVIDEORECORDING.toString()));

视频意图按预期开始,并在我完成录制后崩溃-甚至还没有达到“ onActivityResult”。错误是:

 java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference

不知道为什么那里有一个位图?

Anywayz,因此,为了尝试找出问题所在,我将以下内容注释掉,然后再次尝试:

cameraACTION_VIDEO_CAPTURE.putExtra(MediaStore.EXTRA_OUTPUT, tempUri);

它有效:(--视频存储在这里:

/storage/emulated/0/DCIM/Camera/VID_20181004_213440310_HDR.mp4

1 个答案:

答案 0 :(得分:0)

好的,我有一个部分答案。关于应用程序不崩溃,我使用FileProvider生成了Uri。

tempUri = FileProvider.getUriForFile(
context,
BuildConfig.APPLICATION_ID + ".provider",
new File(accessLocalStorage.getThisAppsStorageUriPath().getPath())
);

但是,保存在Uri路径中的视频文件的大小/长度为0(),我没有时间来解决这个问题,所以这个故事在这里结束了:(-希望这对您有所帮助为了别人!