Version: 6000.3
语言: 中文
设备功能和权限
声明应用程序的权限

Unity 中的 Android 权限

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

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

对于某些权限,Unity 会自动处理构建时的 Android 应用清单条目和运行时权限请求。有关详细信息,请参阅 Unity 处理的权限

声明权限

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

注意:如果插件在 Unity 外部创建的一组代码,用于在 Unity 中创建功能。可以在 Unity 中使用两种插件:托管插件(使用 Visual Studio 等工具创建的托管 .NET 程序集)和本机插件(特定于平台的本机代码库)。更多信息
请参阅术语表
在其 Android 应用清单中声明权限,Gradle一种 Android 构建系统,可自动执行多个构建过程。这种自动化意味着许多常见的生成错误不太可能发生。更多信息
请参阅术语表
在 Gradle 合并阶段自动将权限添加到最终的 Android 应用清单中

运行时权限

您可以在应用程序运行时随时请求运行时权限。最佳做法是,当应用程序首次需要数据/功能时,请求受限数据或设备功能的权限。在发送请求之前,还应向用户显示一条消息,说明应用程序需要数据/功能的原因。这对于为用户提供上下文非常重要,这样他们就不太可能因混淆而拒绝权限。

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

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

Unity 处理的权限

根据玩家设置设置,可让您为 Unity 构建的最终游戏设置各种特定于玩家的选项。更多信息
请参阅术语表
以及应用程序使用的 Unity API,Unity 会自动向 Android 应用清单添加一些必需的权限,并在运行时发送权限请求。这也适用于应用程序使用的任何插件。

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

以下列表说明了 Unity 会自动处理哪些权限:

  • 如果应用程序使用 Handheld.Vibrate 等振动,Unity 会将VIBRATE权限。
  • 如果应用程序使用 Application.internetReachability 属性,Unity 会添加ACCESS_NETWORK_STATE权限。
  • 如果应用程序使用位置 API(例如 LocationService),Unity 会将ACCESS_FINE_LOCATION权限,并在应用首次使用位置信息时向用户请求权限。
  • 如果应用程序使用 WebCamTexture 类,Unity 会添加CAMERA权限,并在应用首次使用WebCamTexture.
  • 如果应用程序使用 Microphone 类,则添加RECORD_AUDIO权限,并在应用首次使用Microphone.

其他资源

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