android6.0动态获取权限

来源:互联网 发布:赢时胜软件上海分公司 编辑:程序博客网 时间:2024/06/09 23:42
/* 这里涉及到一个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;            }        }


0 0
原创粉丝点击