关于Android读写权限申请失败,无法使用的问题 |
您所在的位置:网站首页 › 苹果app权限获取失败原因 › 关于Android读写权限申请失败,无法使用的问题 |
问题描述
在Android原生项目静态注册读写权限并实现动态获取权限,然后导出aar文件到Unity项目中进行build Android APK. Apk打包完成后在Android手机中测试,发现获取不到手机读写权限,手机权限设置也并没有包含读写权限选项. 静态注册: 权限设置界面: 问题在与Unity BuildApk时最终生成的清单文件(AndroidManifest)下,读写权限的申请发生了改变 多了android:maxSdkVersion="18"的限制 它表示这项权限只在API Level 18)及以下的系统中需要使用。对API Level18以上的系统中不需要使用这项权限。 出现该问题的原因是Unity在Gradle模式下Build APK Unity在Build的过程中会将项目内所有的jar,aar包的清单文件也就是AndroidManifest合并起来,这个过程中会产生合并冲突. 合并冲突,是指多个Manifest文件中含有同一属性但值不同时,默认合并规则解决不了从而导致的冲突。 当冲突发生时,高优先级的Manifest属性值会覆盖低优先级属性值。 所以我们只要使Unity 在buildApk时生成的最终清单文件没有android:maxSdkVersion="18"的限制问题就解决了. Unity使用主的Android清单在Unity安装目录下(优先级最高) 我们需要重写主Android Manifest 虽然Unity可以给你生成一个正确的Android Manifest,但有些情况下你可能想直接使用你想要的内容。 所以我们在Assets/Plugins/Android目录下生成我们想要的AndroidManifest.Xml这将覆盖Unity创建的默认的清单。(如果你的Assets/Plugins/Android目录下有自己准备好的AndroidManifest.Xml则无需该操作) 然后添加读写权限(有读写权限则参考下面代码修改) 或 然后就可以重新BuildApk了 查看最终合并的清单文件:项目地址/Temp/gradleOut/build/intermediates/merged_manifests/debug/processDebugManifest/merged/AndroidManifest.xml 确定没有android:maxSdkVersion=“18” 的限制后,发送Apk到手机上运行会发现读写权限是可用的 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |