关于Android读写权限申请失败,无法使用的问题

您所在的位置:网站首页 苹果app权限获取失败原因 关于Android读写权限申请失败,无法使用的问题

关于Android读写权限申请失败,无法使用的问题

2024-07-14 01:01| 来源: 网络整理| 查看: 265

问题描述

在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