首页 > 解决方案 > Android FileProvider - java.lang.IllegalArgumentException:在尝试拍摄视频时无法找到包含 /data/data/ 的已配置根目录

问题描述

目前,我正在尝试使用以下 kotlin 代码片段在我的应用中拍摄视频

    private fun dispatchTakeVideoIntent() {
        Intent(MediaStore.ACTION_VIDEO_CAPTURE).also { takeVideoIntent ->
            val pather = File(filesDir, "Videos")
            pather.mkdirs()
            val file = File(pather,"VideoFileName.mp4")
            takeVideoIntent.putExtra(MediaStore.EXTRA_OUTPUT, FileProvider.getUriForFile(this, "$packageName.fileprovider", file))

            takeVideoIntent.resolveActivity(packageManager)?.also {
                startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE)
            }
        }
    }

但我在“takeVideoIntent.putExtra ...”行收到以下错误。

    java.lang.IllegalArgumentException: Failed to find configured root that contains /data/data/...

我的清单中有以下提供程序

        <provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="com.example.app.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths" />
        </provider>

xml 提供程序路径文件看起来像这样

<paths>
    <files-path path="my_docs" name="Videos/" />
</paths>

有什么建议么?

标签: androidkotlinillegalargumentexception

解决方案


推荐阅读