运行时权限
6.0开始
危险权限
终端输入:
adb shell pm list permissions -d -g可以查看危险权限
eg.打电话
public void myClick(View view) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
// 如果还没授权就请求权限
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.CALL_PHONE}, 1);
} else {
// 如果用户授权过就直接执行
callPhone();
}
}
private void callPhone() {
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:10086"));
startActivity(intent);
}
/**
* 重写此方法处理用户是否授权
* @param requestCode 请求码 用来区分请求的权限
* @param permissions
* @param grantResults 授权的数组 下标为权限的位置
*/
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode){
case 1:
// 判断是否已经授权
if(grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED){
// 执行
callPhone();
} else {
// 用户拒绝授权
Toast.makeText(this, "拒绝了打电话的权限", Toast.LENGTH_SHORT).show();
}
break;
}
}