<
6.0请求权限
>
上一篇

Ngnix 反向代理
下一篇

短信插入 android4.4

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();
}
Top
Foot