Android6.0后权限管理机制
Normal Permissions (普通权限)
Dangerous Permissions(危险权限)需要用户手动处理
int result = ActivityCompat.checkSelfPermission(this,Manifest.permission.READ.PHONE.STATE);
if(result == PackageManager.){
//已获取权限
}else{
//未获取权限 需要用户手动给予
if(ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.READ.PHONE.STATE)){
//当多次拒绝并选择不提提醒,
//那么下次再去读取就不会在去申请授权,
//而是直接在回调中说明用户已拒绝授权
showRequestPermission();
}else{
//只被拒绝过一次该权限的申请
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ.PHONE.STATE},REQUEST_CALLPHONE_PERMISSION);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if(requestCode == REQUEST_CALLPHONE_PERMISSION){
if(grantResults[0] == PackageManager.PERMISSION_GRANTED){
//已获取权限
//执行逻辑
}else{
toast("拒绝了打电话权限");
}
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
/**
* 申请打电话的权限得的对话框,之前被勾选不再提醒申请权限
*/
private void showRequestPermission(){
new AlertDialog.Builder(SkipWebActivity.this)
.setTitle("申请权限")
.setMessage("请求权限拨打电话")
.setPositiveButton("同意", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//申请权限
ActivityCompat.requestPermissions(SkipWebActivity.this,new String[]{Manifest.permission.CALL_PHONE},REQUEST_CALLPHONE_PERMISSION);
}
})
.setNegativeButton("拒绝", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//拒绝授权
//不申请权限 不操作
}
})
.show();
}