版本:Unity 6 (6000.0)
语言:英语
为应用程序声明权限
处理 Android 崩溃

请求运行时权限

本页介绍如何请求用户允许您的应用程序访问设备上的数据或使用设备功能,例如内置 摄像头 或麦克风。

Google 的权限请求指南建议,如果用户一次拒绝了权限请求,您应该显示请求的原因并再次提出请求。

有关何时以及如何在 Android 设备上请求权限的更多信息,请参阅 Android 开发人员指南中的 应用权限最佳实践

先决条件

运行时权限 API 需要 Android 版本 6(API 级别 23)。要更改应用程序的目标 API

  1. 选择 编辑 > 项目设置
  2. 在项目设置窗口中,选择 播放器 选项卡,然后打开 Android 播放器设置
  3. 其他设置 > 标识 部分,将 目标 API 级别 设置为至少 23。

在应用程序请求使用受限数据或特定设备功能的权限之前,它必须在其 Android 应用清单 中声明该权限。有关更多信息,请参阅 为应用程序声明权限

在运行时请求权限

Android.Permission API 提供了您可以用来检查应用程序当前拥有什么权限以及请求应用程序需要但没有的权限的功能。

在运行时请求权限的过程概述如下

  1. 检查用户是否已授予应用程序权限。如果已授予,则无需再次请求。
  2. 如果用户尚未授予权限,请检查您是否需要显示请求权限的理由。如果不需要理由,则直接发送请求,以访问应用程序所需的数据或使用设备功能。
  3. 如果用户拒绝了应用程序权限,请禁用应用程序中需要该特定权限的功能。如果应用程序无法在没有此功能的情况下运行,请通知用户。
  4. 如果用户仍然拒绝了应用程序权限,最佳做法是提供一种方法,让用户可以从应用程序内部手动再次触发权限请求。

检查应用程序是否有权限

使用 Permission.HasUserAuthorizedPermission 检查用户是否已授予应用程序所需的数据或功能的权限。

有关显示如何使用此 API 的代码示例,请参阅 Permission.HasUserAuthorizedPermission

检查是否显示权限请求的理由

使用 Permission.ShouldShowRequestPermissionRationale 检查您是否需要显示特定权限请求的理由。

如果需要理由,请显示一条消息,说明您的应用程序为何需要访问特定的设备功能。显示消息后,发送请求以获取权限。

如果不需要理由,请直接发送请求以获取权限。

有关显示如何使用此 API 的代码示例,请参阅 Permission.ShouldShowRequestPermissionRationale

发送权限请求

使用 Permission.RequestUserPermission 请求使用数据或功能的权限。调用此方法时,Android 会打开系统权限对话框,用户可以使用它来授予或拒绝权限。

有关显示如何使用此 API 的代码示例,请参阅 Permission.RequestUserPermission

使用 Permission.RequestUserPermissions 一次请求对用户设备上的多个资源的访问权限。此方法使用字符串数组,每个字符串代表访问特定资源的特定权限,例如设备的 摄像头 、麦克风或位置。

这些方法可以接受 PermissionCallbacks 对象,您可以使用它来指定在用户授予或拒绝权限后的代码。您可以使用它在用户授予权限请求后立即开始使用设备功能。例如,您可以开始从麦克风录制。

提示:当您请求权限时,最佳做法是向用户显示一条消息,解释应用程序为何需要该功能。

注意:如果用户在系统权限对话框中启用了 不再询问我 选项,或者多次拒绝了权限,则 RequestUserPermission() 不会打开系统对话框。在这种情况下,用户必须进入应用程序权限设置并手动启用权限。

提供一种手动触发权限请求的方法

如果用户拒绝了应用程序所需的权限,请提供一种方法让用户手动显示权限请求对话框。如何执行此操作取决于应用程序,但一种解决方案是提供一个调用 Permission.RequestUserPermission 的按钮。

为应用程序声明权限
处理 Android 崩溃