本页介绍如何请求用户允许您的应用程序访问设备上的数据或使用设备功能,例如内置 摄像头 或麦克风。
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 的按钮。