Version: 6000.3
语言: 中文
声明应用程序的权限
处理 Android 崩溃

请求运行时权限

本页介绍如何请求用户权限,以便您的应用程序访问设备上的数据或使用设备功能(例如内置照相机或麦克风。

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

如需详细了解如何在 Android 设备上请求权限,请参阅 Android 开发者指南中的应用权限最佳做法

先决条件

在应用请求使用受限数据或特定设备功能的权限之前,它必须在其 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 崩溃