动态注册权限

首先查看权限是否授予:
官网代码
// Assume thisActivity is the current activity
int permissionCheck = ContextCompat.checkSelfPermission(thisActivity,

        Manifest.permission.WRITE_CALENDAR);

其中,如果已经注册权限,此方法会返回一个int值PackageManager.PERMISSION_GRANTED,此值为1.如果没有申请权限,将返回PackageManager.PERMISSION_DENIED,值为-1.

动态注册权限:

// 首先是判断
if (ContextCompat.checkSelfPermission(thisActivity,
                Manifest.permission.READ_CONTACTS)
        != PackageManager.PERMISSION_GRANTED) {

    // Should we show an explanation?
    if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
            Manifest.permission.READ_CONTACTS)) {
      // 显示给用户的解释
    } else {
        // No explanation needed, we can request the permission.
        ActivityCompat.requestPermissions(thisActivity,
                new String[]{Manifest.permission.READ_CONTACTS},
                MY_PERMISSIONS_REQUEST_READ_CONTACTS);
    }
}
  
  
其中,ActivityCompat.shouldShowRequestPermissionRationale(thisActivity, Manifest.permission.READ_CONTACTS)
  
  
方法用于判断是否该给用户一个解释为何需要打开此权限。如果已经请求过此权限并且用户拒绝,将返回true。
  
  
注意:如果用户在过去拒绝了权限请求,并在“权限请求系统”对话框中选择“不再次请求”选项,则此方法返回false。如果设备策略禁止应用程序具有该权限,该方法也会返回false。

new String[]{Manifest.permission.READ_CONTACTS}为你要申请的权限数组
  
  

MY_PERMISSIONS_REQUEST_READ_CONTACTS为自定义的一个标记变量,以便在后续操作中判断。
  
  

。。。。。

当用户对弹出的提示框进行了操作时,将会回调onRequestPermissionsResult() 方法,因此可以在此方法中进行

相关操作。

@Override
public void onRequestPermissionsResult(int requestCode,
        String permissions[], int[] grantResults) {
    switch (requestCode) {
        case MY_PERMIEAD_CONTACTS: {
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0
                && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
			// 权限请求成功的操作
            } else {

    			// 权限请求失败的操作
            }
            return;
        }

        // case其他权限结果。。
    }
}
  
  


  
  
最后,还有一些需要注意的地方,例如,假如用户已经明确的指明拒绝该权限申请并不再提示,这时候就不应该再做任何与用户的


交互。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值