若要获取权限访问 Unity 应用程序沙盒之外的设备特性或数据,有两个阶段:
对于某些权限,Unity 会自动处理构建时 Android 应用程序清单条目和运行时权限请求。有关详细信息,请参阅 由 Unity 处理的权限。
Android 应用程序只能请求用户使用其在 Android 应用程序清单中声明的设备特性或数据。这是 Android 权限处理的构建时阶段。有关如何声明权限的信息,请参阅 声明应用程序的权限。
注意:如果 插件在 Unity 外部创建的一组代码,可为 Unity 创造功能。您可以在 Unity 中使用两种插件:托管插件(使用 Visual Studio 等工具创建的托管 .NET 程序集)和本机插件(平台特定的本机代码库)。 更多信息
请参阅 词汇表 在其 Android 应用程序清单中声明了一个权限,则 Gradle一种 Android 构建系统,可自动执行多个构建流程。通过这一自动执行,许多常见的构建错误发生的可能性更小。 更多信息
请参阅 词汇表 会在 Gradle 合并阶段自动将该权限添加到最终的 Android 应用程序清单中
应用程序运行期间,您可以在任何时候请求运行时权限。最佳做法是仅在应用程序第一次需要数据/特性时请求对受限数据或设备特性的权限。在发送请求之前,您还应向用户显示一条消息,解释应用程序需要数据/特性的原因。这对于提供上下文非常重要,这样用户就不太可能出于困惑而拒绝该权限。
有关如何请求运行时权限的信息,请参阅 请求运行时权限。
重要:如果您尝试请求用户授予 Android 应用程序清单中未声明的一个权限,则设备不会显示请求权限对话框。
根据播放器设置可让你为 Unity 构建的最终游戏设置各种特定播放器选项的设置。更多信息
在词汇表中查看和应用程序使用的 Unity API,Unity 会自动向 Android App Manifest 添加一些必需权限,并在运行时发送权限请求。这也适用于应用程序使用的任何插件。
如要阻止 Unity 自动在运行时发送权限请求,请向 Android App Manifest 添加 unityplayer.SkipPermissionsDialog
。如果希望在用户看到权限请求之前提供应用程序需要每个权限的详细信息,则此方法非常有用。在这种情况下,你需要手动发送权限请求。有关详细信息,请参阅 请求运行时权限。
以下列表说明 Unity 自动处理的哪些权限
VIBRATE
权限。ACCESS_NETWORK_STATE
权限。ACCESS_FINE_LOCATION
权限,并在应用程序首次使用位置时向用户请求权限。CAMERA
权限,并在应用程序首次使用 WebCamTexture
时向用户请求权限。RECORD_AUDIO
权限,并在应用程序首次使用 Microphone
时向用户请求权限。