2019独角兽企业重金招聘Python工程师标准>>>
void requestPermissions (Activity activity, String[] permissions, int requestCode)
请求授予此应用程序的权限。这些权限必须在您的清单中被请求,它们不应该被授予您的应用程序,并且它们应该具有保护级别#PROTECTION_DANGEROUS,无论它们是由平台还是第三方应用程序声明的。
如果清单中有请求,则在安装时授予正常权限PROTECTION_NORMAL。如果清单中有请求,则在安装时授予签名权限PROTECTION_SIGNATURE,并且您的应用程序的签名与声明权限的应用程序的签名相匹配。
如果您的应用程序没有请求的权限,用户将会看到UI来接受它们。在用户接受或拒绝请求的权限之后,无论是否授予权限,您都将收到一个回调报告。您的活动必须实现ActivityCompat。OnRequestPermissionsResultCallback和权限请求的结果将被传递到它的onRequestPermissionsResult(int, String[], int[])方法。
请注意,请求权限并不保证它会被授予,您的应用程序应该能够在没有该权限的情况下运行。
此方法可以启动一个活动,允许用户选择授予哪些权限和拒绝哪些权限。因此,您应该准备好您的活动可能会暂停并重新开始。此外,授予某些权限可能需要重新启动应用程序。在这种情况下,系统将在将结果交付给onRequestPermissionsResult(int, String[], int[])之前重新创建活动堆栈。
当检查您是否有权限时,您应该使用checkSelfPermission(android.content)。背景下,字符串)。
调用这个API来获得已经授予应用程序的权限将向用户显示UI,以决定应用程序是否仍然可以持有这些权限。如果您的应用程序使用权限保护的数据的方式发生了显著变化,这将非常有用。
如果您的活动在清单中将noHistory设置为true,则不能请求权限,因为在这种情况下,该活动不会接收包括onRequestPermissionsResult(int, String[], int[])在内的结果回调。
RuntimePermissions示例应用程序演示了如何使用此方法在运行时请求权限。
Parameters | |
---|---|
activity |
Activity : The target activity.
|
permissions |
String : The requested permissions. Must be non-null and not empty.
|
requestCode |
|
参见:
String [] onRequestPermissionsResult (int, int [])
checkSelfPermission (android.content。情况下,字符串)
shouldShowRequestPermissionRationale (android.app。活动中,字符串)