1、权限的请求和检查,检查哪些是危险权限,在命令行中执行:adb shell pm list permissions -d -g 就可以列出危险权限和权限组
2、以下是拨打电话的权限申请
public void onClick(View view) {
switch(view.getId()){
case R.id.callPhone:
callPhone();
break;
case R.id.take_picture:
takePicture();
break;
case R.id.downLoad_file:
downloadFile();
break;
}
}
/**
* 打电话
*/
private void callPhone() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) !=
PackageManager.PERMISSION_GRANTED){
//做权限申请处理
//需要的参数,上下文,要请求的权限名称,和请求码
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CALL_PHONE},1);
}else{
doCallPhone();
}
}
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch(requestCode){ case 1: //打电话权限的回调处理 if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { doCallPhone(); }else{ Toast.makeText(this,"您拒绝了这个权限,应用的部分功能将不能使用",Toast.LENGTH_LONG).show(); } break; case 2: break; case 3: break; }
/** * 执行打电话操作 */ private void doCallPhone() { Intent intent = new Intent(Intent.ACTION_CALL); Uri data = Uri.parse("tel:"+"10086"); intent.setData(data); this.startActivity(intent); }
其他的权限以此类推,但是这个有多个权限的话工作量就特别大,需要抽取出来,