内容uri在Android KitKat上崩溃相机

时间:2016-10-17 13:38:22

标签: android android-4.4-kitkat android-fileprovider

在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?

2 个答案:

答案 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配置。