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

荣耀设备如何通过FileProvider获取/data/hw_init路径下文件的Uri

问题原因

你遇到的报错是因为当前的provider_paths.xml没有配置/data/hw_init路径的访问权限,FileProvider默认内置的路径标签(如files-path、cache-path、external-path等)仅覆盖Android原生定义的常规存储路径,荣耀自定义的/data/hw_init分区路径不在默认覆盖范围内,所以调用FileProvider.getUriForFile时会抛出IllegalArgumentException。

解决步骤

  1. 修改你的res/xml/provider_paths.xml文件,新增root-path标签配置,覆盖/data/hw_init路径:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 原有已配置的其他路径正常保留即可 -->
    <files-path name="files" path="." />
    <external-path name="external" path="." />
    <!-- 新增下方这行配置,专门授权/data/hw_init路径的访问权限 -->
    <root-path name="hw_init" path="data/hw_init/" />
</paths>

说明:root-path对应的是设备根目录/,配置path="data/hw_init/"仅会授权该路径下的文件访问权限,不会额外扩大授权范围,不会引入额外安全风险。

  1. 确认应用已获取/data/hw_init路径的读取权限:
  • 该路径属于荣耀系统预置资源分区,普通应用默认无读取权限,你可以先通过file.exists()和file.canRead()方法验证当前应用是否可以访问目标文件
  • 部分荣耀系统版本可通过申请android.permission.READ_EXTERNAL_STORAGE权限间接获取该路径访问权限,若仍无法访问,可前往荣耀开发者平台查询对应预置资源的专属访问规则。
  1. 原有获取Uri的代码无需修改,配置完成后即可正常获取对应路径的文件Uri。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:00:02