Android 6.0权限和安装OBB

zom*_*mpi 9 android android-permissions apk-expansion-files

我在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,游戏也可以访问此目录:

  • 摩托罗拉Nexus 6
  • LG Nexus 5

但它似乎无法访问此目录:

  • 三星Galaxy S5,S6和S7
  • Nvidia Shield平板电脑

我甚至使用Alpha测试检查它,以模拟从商店下载游戏.

当给予存储权限(通过应用程序设置)时,一切运行正常.

OBB是如何安装的?

我使用的虚幻引擎4使用C open()函数来处理OBB文件:

int32 Handle = open(LocalPath, O_RDONLY);
Run Code Online (Sandbox Code Playgroud)

其中LocalPath是obb文件的完整路径:/ storage_emulated/0/Android/obb/com.company.productname/main.10003.com.company.productname.obb

问题是:

  1. 游戏是否需要READ/WRITE _EXTERNAL_STORAGE才能读取和下载OBB文件?
  2. 如果是,那么我怎么可能摆脱询问用户权限的警报.
  3. 如果没有,那为什么三星Galaxy S系列会出现这样的麻烦?

zom*_*mpi 10

好吧,似乎问题列在其他地方,但我找不到因为我不知道这是确切的问题......

https://code.google.com/p/android/issues/detail?id=197287

由于某种原因,API23将OBB的用户设置为root用户,而不是正确的用户,因此应用程序无法访问它.

重启设备后一切正常.

目前还没有明确的解决方法.

感谢@Larry提供所有必要和有用的信息:)