Android6.0后权限申请变了,系统在使用危险权限时必须在进行运行时权限处理。
1.判断是否有该权限
ContextCompat.checkSelfPermission(Context context,权限名)
与 PackageManager.PERMISSION_GRANTED比较
如果相等说明已授权。
不等就得再申请。
if(ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE)!= PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CALL_PHONE},1);
}
2.权限申请
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CALL_PHONE},1)//接受三个参数,context,权限数组,请求码,唯一就好
3.申请权限回调
申请权限后会回调onRequestPermissionsResult()
有三个参数,请求码,权限名,请求结果
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode){
case 1:
if (grantResults.length>0&&grantResults[0] == PackageManager.PERMISSION_GRANTED)
{
Log.d("request","获得权限");
}
break;
default:
}
}