我对Android 6.0及更高版本的权限存在问题。
我正在开发的游戏正在使用WRITE_EXTERNAL_STORAGE权限。在Android 6.0及更高版本上,必须显示要求用户允许它的警报。
我已收到摆脱此警报的请求,这意味着该游戏不能再使用WRITE_EXTERNAL_STORAGE。
从技术上讲,游戏现在不在任何地方写入和读取外部存储。所有保存和缓存的文件都存储在特定于应用程序的目录中(/storage/emulated/0/Android/data/com.company.productname)
但是,游戏必须读取(有时是下载)OBB文件,该文件存储在/storage/emulated/0/Android/obb/com.company.productname目录中。
即使在设备上没有WRITE_EXTERNAL_STORAGE或READ_EXTERNAL_STORAGE,游戏也可以访问此目录:
但似乎没有访问此目录的权限:
我甚至使用Alpha测试进行了检查,以模拟从商店下载游戏。
授予存储权限(通过“应用程序设置”)后,一切运行正常。
OBB如何安装?
我使用的虚幻引擎4正在使用C open()函数来处理OBB文件:
int32 Handle = open(LocalPath, O_RDONLY);
其中LocalPath是obb文件的完整路径:/storage/emulated/0/Android/obb/com.company.productname/main.10003.com.company.productname.obb
问题是:
最佳答案
好的,似乎该问题已在其他位置列出,但我找不到,因为我不知道这是确切的问题...
https://code.google.com/p/android/issues/detail?id=197287
API23由于某种原因将OBB的用户设置为root,而不是正确的用户,因此,该应用无法访问它。
重新启动设备后,一切正常。
目前,尚无明确的解决方法。
感谢@Larry提供所有必要和有用的信息:)
关于Android 6.0权限和OBB挂载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38355912/