版本:Unity 6 (6000.0)
语言:英文
设备特性和权限
声明应用程序的权限

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 App Manifest 添加一些必需权限,并在运行时发送权限请求。这也适用于应用程序使用的任何插件。

如要阻止 Unity 自动在运行时发送权限请求,请向 Android App Manifest 添加 unityplayer.SkipPermissionsDialog。如果希望在用户看到权限请求之前提供应用程序需要每个权限的详细信息,则此方法非常有用。在这种情况下,你需要手动发送权限请求。有关详细信息,请参阅 请求运行时权限

以下列表说明 Unity 自动处理的哪些权限

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

其他资源

设备特性和权限
声明应用程序的权限