现象:App 编译出来之后,大概率可以正常运行,也就是可以访问这个路径。可以正常运行的情况下,运行几次之后或者过段时间就会报错 Access Denied.
Application.PersistentDataPath:在安卓平台的路径为 Storage/emulated/0/Android/data/包名/files.
设备:小米平板,系统 Android13.
注:通过文件管理器查看,在 Storage/emulated/0/Android/data/包名/files 路径下目标文件是存在的,也不是文件占用问题,因为应用重启和设备重启都不起作用.
请大佬提点可能是哪里的问题导致的!
1
dvsilch 356 天前
不是很懂 Android ,猜测是 AndroidManifest.xml 里需要一些配置项,之前权限相关我看同事一般是通过修改这个文件来实现的
|
2
sunny352787 356 天前
没见过,Application.PersistentDataPath 一般不会有问题,大概率是你添加的文件路径写的有问题,输出一下检查看是不是有非法字符或者斜杠反斜杠之类的错误
|
4
Xbathy OP @sunny352787 路径没问题,因为他可以正常读取文件,只是读取几次之后,或者过段时间就会没有权限了,很奇怪.
|
5
vyronlee 355 天前
我们项目也出现过类似问题,表现就是 AB 包文件是存在的( Load 之前我们会自己用接口先判断文件是否存在),也是能加载的,但是运行一段时间后某个时刻却又无法加载进来,非常怪异;
社区里问过大佬,他们说是各家的安卓系统文件操作接口各种魔改作妖,未必是按照规范来,建议都加上 READ/WRITE_EXTERNAL_STORAGE 自己再测试验证(我没实测过,不做保证,因为副作用很大,APP 启动时会弹相册权限请求所以就放弃了) |
7
vyronlee 355 天前
没解决,发行方不让加权限。因为发生概率不是很大(大概 1w 次启动里有几十次发生)就搁置了。
|
8
janus77 355 天前
0 是 root 用户吧?这里应该用你当前用户的 uid 的,你这个看起来是硬编码,当然访问不了了,不能这样写,要用 Android 提供的 API
|
10
Xbathy OP 现在发现可能不是权限问题了,是 Unity 的 Application.PersistentDataPath 在安卓平台的值会变 大概率是 Storage/emulated/0/Android/data/包名/files. 偶尔会变成 data/user/0/包名/files. 这是什么情况...
|