在Android API 19(Kitkat)上使用内容uri和FileProvider时遇到问题。这是我用来在设备上打开相机并录制视频的代码:
File file = new File(pathname);
Uri fileUri = FileProvider.getUriForFile(this, AUTHORITY_STRING, file);
Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
startActivityForResult(intent, requestCode);
我已经在API的23-24上测试了这个代码,它运行得很好,但在我开始在相机应用程序中拍摄视频后,API 19相机以RESULT_CANCELED关闭。 当我试图用ACTION_IMAGE_CAPTURE动作拍照时,同样的事情发生了。 我试图用Uri.fromFile()更改FileProvider.getUriForFile()。这适用于Kitkat,但我不能在Android 7上使用它。 为什么Adnroid Kitkat上的Camera不想使用内容uri?
答案 0 :(得分:16)
也许你可以试试这个。
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT){
fileUri = Uri.fromFile(mTmpFile);
} else {
fileUri = FileProvider.getUriForFile(getContext(),
getContext().getPackageName()+".provider",mTmpFile);
}
答案 1 :(得分:3)
并非每个相机应用都支持content
的{{1}} Uri
值,尽管它们应该。但是,有数以千计的相机应用程序,有些百分比将在这样的EXTRA_OUTPUT
上失败。例如,直到今年夏天,Google自己的相机应用程序都不支持Uri
content
的{{1}} Uri
。
要么停止使用EXTRA_OUTPUT
,要么使用不可靠的结果。
如果您希望继续使用ACTION_VIDEO_CAPTURE
ACTION_VIDEO_CAPTURE
值,请将file
降至23或更低,或通过更改{{1}来停用Uri
配置。