Version: Unity 6.0 (6000.0)
语言 : 中文
设备功能和权限
声明应用程序的权限

Unity 中的 Android 权限

要获得在 Unity 应用程序沙盒外部访问设备功能或数据的权限,有两个阶段:

  1. 在构建时,在应用程序的 Android 应用程序清单中声明权限。
  2. 在运行时,向用户请求权限。

对于某些权限,Unity 会自动处理构建时 Android 应用程序清单条目和运行时权限请求。想了解更多相关信息,请参阅 Unity 处理的权限

声明权限

Android 应用程序只能请求用户使用其在 Android 应用程序清单中声明的设备功能或数据的权限。这是 Android 权限处理的构建时阶段。有关如何声明权限的信息,请参阅声明应用程序权限

注意:如果插件在其 Android 应用程序清单中声明了权限,Gradle 会在__ Gradle__一套 Android 构建系统,可自动执行多种构建过程。这种自动化意味着能减少许多常见的构建错误。更多信息
See in Glossary
合并阶段自动将权限添加到最终的 Android 应用程序清单中

运行时权限

可以在应用程序运行的时候随时请求运行时权限。最佳做法是在应用程序首次需要数据/功能时请求访问受限数据或设备功能的权限。还应该向用户显示一条消息,说明在发送请求之前应用程序需要数据/功能的原因。这对于为用户提供背景信息非常重要,这样他们就不会因为困惑而拒绝授予权限。

有关如何在运行时请求权限的信息,请参阅请求运行时权限

重要信息:如果尝试向用户请求 Android 应用程序清单未声明的权限,则设备不会显示权限对话框。

Unity 处理的权限

Unity 根据应用程序使用的播放器设置 和 Unity API,会自动向 Android 应用程序清单添加一些所需的权限,并在运行时发送权限请求。这也适用于应用程序使用的任何插件。

要阻止 Unity 在运行时自动发送权限请求,请将 unityplayer.SkipPermissionsDialog 添加到 Android 应用程序清单中。如果要在用户看到权限请求之前提供有关应用程序需要每个权限的原因的信息,这将非常有用。在这种情况下,需要手动发送权限请求。有关更多信息,请参阅请求运行时权限

以下列表解释了 Unity 自动处理的权限:

  • 如果应用程序使用振动,例如 Handheld.Vibrate,Unity 会将 VIBRATE 权限添加到 Android 应用程序清单中。
  • 如果应用程序使用 Application.internetReachability 属性,Unity 会将 ACCESS_NETWORK_STATE 权限添加到 Android 应用程序清单中。
  • 如果应用程序使用位置 API(例如 LocationService),Unity 会将 ACCESS_FINE_LOCATION 权限添加到 Android 应用程序清单中,并在应用程序第一次使用位置时请求用户授予权限。
  • 如果应用程序使用 WebCamTexture 类,Unity 会将 CAMERA 权限添加到 Android 应用程序清单中,并在应用程序第一次使用 WebCamTexture 时请求用户授予权限。
  • 如果应用程序使用 Microphone 类,则会将 RECORD_AUDIO 权限添加到 Android 应用程序清单中,并在应用程序第一次使用 Microphone 时请求用户授予权限。

其他资源

设备功能和权限
声明应用程序的权限