我目前正在使用文件提供程序上的内容URI来检索由 ACTION_IMAGE_CAPTURE
意图返回的相机图像。这很好地运作。
由于某种奇怪的原因,当尝试从相机检索视频文件时,相同的调用不起作用。
destinationFile = File.createTempFile("video", ".mp4", this.getFilesDir());
Uri uri = FileProvider.getUriForFile(this, getPackageName() + ".fileprovider", destinationFile);
Intent cameraIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
cameraIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
cameraIntent.setClipData(ClipData.newRawUri(null, uri));
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(cameraIntent, ID);
当意图在
onActivityResult()
中返回时,目标文件是空的。只需将
MediaStore.ACTION_VIDEO_CAPTURE
替换为 MediaStore.ACTION_IMAGE_CAPTURE
即可获得预期的行为:拍摄的图像将保存在目标文件中。这发生在 Nexus 设备上运行的原始 Android 6.0.1 上以及默认的 Google 相机应用程序中。
内容 URI 真的不支持视频捕获吗?我宁愿不使用公共可访问目录中的文件 URI。