安卓6.0系统,特定情况读取obb,需要SD卡权限

    我们项目在启动的时候会去申请SD卡权限“WRITE_EXTERNAL_STORAGE”,以前这么做的原因是,曾经在不记得什么地方看过一篇文章说6.0的系统会需要这个权限,但是之前一直没测出来是为什么需要这个权限。今天,在520这个特殊的日子,终于发现了这个千古疑点。。

    今天QA找我说,他先把obb文件放到目录下,再安装apk,就会解压失败。但是先安装apk再放obb文件,就没问题。

    我一开始猜测是不是在安装apk的时候把我的obb删了,最后验证发现不是。obb文件在,就是无法解压。于是我重启了一下手机,就解压成功了。。。

    这是一个必现问题,真是太好了。

    于是开始加日志,就看到了底下的这一幕:

错误日志

    结论:

        6.x的系统,当从谷歌商店下载应用的时候,如果obb比apk先下载完成,就会出现权限不足的问题。我们的解决方案是在读obb失败的时候,主动去请求WRITE_EXTERNAL_STORAGE权限

        (6.x系统应该是权限管理有漏洞,在obb下载完成的时候,去查找apk,给apk授权。obb比apk先下载完成的情况,就会找不到apk,导致授权失败。我猜是这样。)

        为什么不在游戏启动的时候去申请呢?因为申请谷歌推荐位的时候,对方建议尽量不要在游戏启动的时候申请太多权限,欧美用户对权限这块会比较敏感。

   

你可能感兴趣的:(安卓6.0系统,特定情况读取obb,需要SD卡权限)