最近公司同事来找我帮他解决一个问题,他的问题是这样的,他在Manfest中配置了文件读写权限,也动态请求了权限,但是始终无法获取存储权限的的Write权限,我看了他的代码和配置,完全没问题,于是debug看效果,果然read权限可以获取,但是write获取不到。
于是我问他最近是否集成了某些第三方的库呢,他告诉我他们最近在集成游戏内部视频广告,其中有一个AppLovin是最近集成的,于是找到这个框架的集成文档,果然,问题就出在这里。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18"/>
这个视频广告sdk内部对文件写权限做了限制,我们都知道,在项目预编译阶段,会将Manfest中的配置Merger到一起,那么我们最终生成的配置清单就是sdk版本高于18的将无法获取WRITE权限。
问题找到了,如果解决呢,这里用到了uses-permission里的tool属性,将AppLovin对这个权限的限制过滤掉就可以了
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:remove="android:maxSdkVersion" />
网友评论