如何在 android Unity 应用程序中禁用 android 运行时位置权限提示

Posted

技术标签:

【中文标题】如何在 android Unity 应用程序中禁用 android 运行时位置权限提示【英文标题】:How to disable android run-time location permission prompt in android Unity app 【发布时间】:2016-08-13 21:07:00 【问题描述】:

我们的 Unity 应用程序不使用任何类型的定位服务,但它被部署在 androidManifest.xml 中。由于我们的目标 sdk 版本设置为 23,它会在运行时请求权限,我们不希望特别是位置 GPS 权限,因为我们不使用它,但我相信 Unity 会添加,因为也许我们使用的一些 3rd 方库可能是引用它,但我不确定为什么将它添加到清单 xml 中。试图从清单中注释下面的代码行,但这不起作用,它仍然会引发运行时权限提示

>  <!-- <uses-permission
> android:name="android.permission.ACCESS_COARSE_LOCATION" /> -->

如果我将目标 sdk 设置为 22(以在安装时切换回旧权限模型),则会引发构建错误,因为它说 android sdk 工具是当前使用 sdk 版本 23 的。

我知道我们可以从设置菜单中撤销权限,但这并不能解决我们的问题

有没有办法在构建期间以任何方式在运行时撤销 ACCESS_COARSE_LOCATION 或 ACCESS_FINE_LOCATION 权限提示?

【问题讨论】:

【参考方案1】:

SDK 版本 23 = Android M。 Android M 在运行时而不是安装时检查权限。我知道解决此问题的唯一方法是访问源代码并注释/删除任何获取设备位置的代码。

首先,通过删除您项目中的所有插件并逐个恢复来找出哪个插件正在请求许可。如果您发现插件存在定位问题,请向插件提供者索取源代码

如果您无法获取源代码,您可以反编译 jar 或 aar 文件并删除部分代码包含位置/GPS 代码,然后将其重新编译回 jar 或 aar 文件。

【讨论】:

以上是关于如何在 android Unity 应用程序中禁用 android 运行时位置权限提示的主要内容,如果未能解决你的问题,请参考以下文章

如何统一禁用物理系统

如何禁用 FCM unity sdk 的 iOS 部分?

在 Unity Firebase SDK 中禁用广告 ID (AAID) 收集运行时

Unity/C#:如何在动画状态机中禁用组件

Unity 中的 Firebase - 禁用持久性

Unity中角色跳跃时如何禁用重力?