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

Adobe AIR Android端FileProvider路径配置问题及路径差异咨询

解决Adobe AIR Android应用中FileProvider路径配置问题

我来帮你逐个解决遇到的问题:

问题1:路径显示差异的原因

你观察到的/data/user/0/air.MY_APP_ID_HERE...和异常中显示的/data/data/air.MY_APP_ID_HERE...其实是同一个目录的两种不同写法。在Android 6.0及以上系统中,/data/user/0是/data/data的软链接(别名),用于实现多用户环境下的存储隔离。系统在不同调试场景下可能会显示其中一种路径,但它们指向的是完全相同的存储位置——这个显示差异并不是导致异常的根源,真正的问题在于你的FileProvider路径配置没有匹配到这个自定义目录。

问题2:正确配置FileProvider路径访问AIR的LocalStore目录

你的文件存储在Adobe AIR的File.applicationStorageDirectory对应的目录,这个路径/data/user/0/air.MY_APP_ID_HERE/MY_APP_ID_HERE/LocalStore/不属于Android FileProvider默认支持的标准目录(比如<files-path>对应应用内部存储的files目录,<external-files-path>对应外部存储的应用私有目录),所以需要通过<root-path>标签来手动配置这个自定义根路径。

修改fileproviderpaths.xml配置

将你的配置文件替换为以下内容:

<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 配置AIR应用的LocalStore目录为可访问的根路径 -->
    <root-path 
        name="air_local_store" 
        path="/data/user/0/air.MY_APP_ID_HERE/MY_APP_ID_HERE/LocalStore/" />
</paths>

或者,考虑到/data/user/0是/data/data的别名,也可以写成等价的路径:

<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <root-path 
        name="air_local_store" 
        path="/data/data/air.MY_APP_ID_HERE/MY_APP_ID_HERE/LocalStore/" />
</paths>

额外注意事项

  • 确保你在ANE代码中调用FileProvider.getUriForFile()时使用的authority和Android清单中配置的完全一致(你当前代码中context.getActivity().getPackageName() + ".files"的写法是正确的,会生成air.MY_APP_ID_HERE.files,和清单中的配置匹配)。
  • 如果你希望避免硬编码包名,可以在ANE的Java代码中动态获取File.applicationStorageDirectory对应的真实路径,但这种方式需要额外的逻辑处理,对于固定的AIR应用目录结构来说,直接硬编码路径是更简单可靠的方案。

修改完成后重新打包测试,应该就能成功生成文件的Content URI,不再抛出路径匹配异常了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:15:27