android6.0动态获取权限

/* 这里涉及到一个API,ContextCompat.checkSelfPermission,主要用于检测某个权限是否已经被授予,
方法返回值为PackageManager.PERMISSION_DENIED或者PackageManager.PERMISSION_GRANTED。
当返回DENIED就需要进行申请授权了。*/
/* 申请授权
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.READ_CONTACTS},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
该方法是异步的,第一个参数是Context;第二个参数是需要申请的权限的字符串数组;
第三个参数为requestCode,主要用于回调的时候检测。可以从方法名requestPermissions以及第二个参数看出,
是支持一次性申请多个权限的,系统会通过对话框逐一询问用户是否授权。*/
if(ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PermissionChecker.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},RQUESTCODE);
}
}

/* 处理权限申请回调*/
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(requestCode==RQUESTCODE){
if(grantResults[0]==PermissionChecker.PERMISSION_GRANTED){
//权限申请授权成功
}
}

}



  /*
      权限校验
       */
    public static void checkPermission(Activity activity){
        if(Build.VERSION.SDK_INT>=23){
            int readPhone=activity.checkSelfPermission(Manifest.permission.READ_PHONE_STATE);
            int receiveSms = activity.checkSelfPermission(Manifest.permission.RECEIVE_SMS);
            int readSms = activity.checkSelfPermission(Manifest.permission.READ_SMS);
            int readContacts = activity.checkSelfPermission(Manifest.permission.READ_CONTACTS);
            int readSdcard = activity.checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE);
             int requestCode = 0;
            ArrayList<String> permissions = new ArrayList<>();
            if(readPhone != PackageManager.PERMISSION_GRANTED){
                requestCode |= 1<<0;
                permissions.add(Manifest.permission.READ_PHONE_STATE);
            }
            if(receiveSms != PackageManager.PERMISSION_GRANTED){
                requestCode |= 1<<1;
                permissions.add(Manifest.permission.RECEIVE_SMS);
            }
            if(readSms != PackageManager.PERMISSION_GRANTED){
                requestCode |= 1<<2;
                permissions.add(Manifest.permission.READ_SMS);
            }
            if(readContacts != PackageManager.PERMISSION_GRANTED){
                requestCode |= 1<<3;
                permissions.add(Manifest.permission.READ_CONTACTS);
            }
            if(readSdcard != PackageManager.PERMISSION_GRANTED){
                requestCode |= 1<<4;
                permissions.add(Manifest.permission.READ_EXTERNAL_STORAGE);
            }
            if(requestCode>0){
                String[] permission = new String[permissions.size()];
                activity.requestPermissions(permissions.toArray(permission),requestCode);
                return;
            }

        }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值