本页面介绍如何请求用户权限,以便应用程序访问设备上的数据或使用内置摄像机或麦克风等设备功能。
根据 Google 关于请求权限的准则,如果用户拒绝了一次权限请求,则应该向用户显示请求权限的原因,并再次提出请求。
有关何时以及如何在 Android 设备上请求权限的更多信息,请参阅 Android 开发者指南中的应用程序权限最佳实践。
运行时权限 API 需要 Android 版本 6(API 级别 23)。要更改应用程序的目标 API:
在应用程序请求使用受限数据或特定设备功能的权限之前,必须在 Android 应用程序清单中声明该权限。有关更多信息,请参阅声明应用程序权限。
Android.Permission API 提供的功能可用于检查应用程序当前拥有的权限,并请求应用程序需要但不具备的权限。
在运行时请求权限的过程概述如下:
使用 Permission.HasUserAuthorizedPermission 可检查用户是否已为应用程序所需的数据或功能授予权限。
有关演示如何使用此 API 的代码示例,请参阅 Permission.HasUserAuthorizedPermission。
使用 Permission.ShouldShowRequestPermissionRationale 可检查是否需要显示特定权限请求的理由。
如果有必要,显示一条消息,说明应用程序需要访问特定设备功能的原因。显示消息后,发送权限请求。
如果不需要理由,请直接继续发送权限请求。
有关演示如何使用此 API 的代码示例,请参阅 Permission.ShouldShowRequestPermissionRationale。
使用 Permission.RequestUserPermission 可请求使用数据或功能的权限。调用此函数时,Android 会打开系统权限对话框,让用户批准(或拒绝)该权限。
有关演示如何使用此 API 的代码示例,请参阅 Permission.RequestUserPermission。
使用 Permission.RequestUserPermissions 可请求一次访问用户设备上多个资源的权限。此方法使用字符串数组,每个字符串代表访问特定资源(例如设备的摄像机、麦克风或位置)的特定权限。
这些方法可以接受 PermissionCallbacks 对象,该对象可用于指定在用户授予或拒绝权限后运行的代码。此属性可用于在用户授予权限后立即开始使用设备功能。例如,可以从麦克风开始录音。
提示:请求权限时,最好向用户显示一条消息,说明应用程序需要该功能的原因。
注意:如果用户在系统权限对话框中启用了不再询问我选项,或者多次拒绝权限,则 RequestUserPermission() 不会打开系统对话框。在这种情况下,用户必须进入应用程序权限设置并手动启用权限。
如果用户拒绝应用程序所需的权限,请为用户提供手动显示权限请求对话框的方法。如何执行此操作取决于应用程序,但一种解决方案是提供一个调用 Permission.RequestUserPermission 的按钮。