在我们的应用程序中,我们为用户提供了使用MediaStore.ACTION_VIDEO_CAPTURE
拍摄新视频的选项,或者使用Intent.ACTION_GET_CONTENT
意图获取当前存储在手机中的视频。在使用默认Google相机应用的Nexus设备中,我们无法访问使用MediaStore.ACTION_VIDEO_CAPTURE
意图拍摄的新视频。
如果我们只是致电
Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
startActivityForResult(takeVideoIntent, Globals.UPLOAD_VIDEO_NEW);
在onActivityResult
内,来自URI
的{{1}}并未指向正确的位置。视频会使用此方法保存到设备上,因此用户可以尝试再次上传。但我们并不想让用户完成这些额外的步骤。
我用于所有设备的下一个方法,我有一个类data.getData()
我创建并传递为mCurrentMediaUri
额外的意图。
MediaStore.EXTRA_OUTPUT
然而,对于使用Google相机应用的Nexus设备使用此方法,视频不仅不会存储在给定的mCurrentMediaUri = FileProvider.getUriForFile(UpdateProfileActivity.this,
BuildConfig.APPLICATION_ID + ".provider", videoFile);
takeVideoIntent.putExtra(MediaStore.EXTRA_OUTPUT, mCurrentMediaUri);
if (takeVideoIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takeVideoIntent, Globals.UPLOAD_VIDEO_NEW);
}
,也不会存储在设备本地任何地方。
如果用户从Play商店下载其他相机应用,我们就不会遇到此问题。如果我们没有通过URI
将URI
传递给意图,我们是否可以找到存储视频的位置?我找到了这篇文章Camera app of Nexus 6P does not write video file to MediaStore.EXTRA_OUTPUT ,但它说明了
"视频可在/data/data/com.commonsware.android.videorecord/files/videos"找到;
根据我的理解,我们无法访问该目录。有人曾经遇到过这个问题,如果有的话,怎么解决?