由于考虑到安全问题,安卓6.0以后,有些权限是需要动态申请的:
if(ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE},1);首先要判断是否获取过该权限避免重复获取。然后再申请,如果需要得到申请权限的结果:
这是运行结果的两种情况,所以我们只需要判断结果是-1还是0 就行 @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode){ case 1: if(grantResults[0] == 0) //成功 else //失败 } }
注意,每一个onRequestPermissionsResult使用前提是requestPermissions被调用了。