You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中如何将File转为content://格式URI?解决FileProvider报错

问题解决:FileProvider权限不匹配导致的IllegalArgumentException

错误根本原因

你在AndroidManifest.xml中注册FileProvider时指定的权限字符串(authorities),和调用FileProvider.getUriForFile()时传入的权限字符串不一致,导致系统无法找到对应的Provider配置信息。

两种修复方案(二选一即可)

方案1:修改代码中的权限字符串,与Manifest配置匹配

将转换代码中的权限部分从.fileprovider改为.provider,和Manifest里的${applicationId}.provider保持一致:

selectedFileUri = FileProvider.getUriForFile(requireContext(), BuildConfig.APPLICATION_ID + ".provider", file)

方案2:修改Manifest中的authorities值,与代码匹配

将Manifest里的authorities属性值从.provider改为.fileprovider,和代码里的BuildConfig.APPLICATION_ID + ".fileprovider"保持一致:

<provider
    android:name="androidx.core.content.FileProvider"
    android:authorities="${applicationId}.fileprovider" <!-- 这里修改 -->
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/provider_paths" />
</provider>

额外注意事项

  • 确保res/xml/provider_paths.xml的文件名和Manifest中meta-data的resource指向完全一致(你的当前配置是正确的)
  • meta-data的name属性使用android.support.FILE_PROVIDER_PATHS是兼容写法,也可以替换为AndroidX标准的androidx.core.content.FileProvider.PATH_PROVIDER_PATHS,两者功能一致

内容的提问来源于stack exchange,提问作者KadKos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 16:32:36