final List<String> permissionsList = new ArrayList<>(); //需要申请的权限列表
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){ //判断版本号是否大于23
if ((checkSelfPermission(Manifest.permission.READ_PHONE_STATE)!= PackageManager.PERMISSION_GRANTED)) //判断该权限是否获得授权
permissionsList.add(Manifest.permission.READ_PHONE_STATE);
if ((checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED))
permissionsList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permissionsList.size() == 0){
init(); //初始化
}else{
requestPermissions(permissionsList.toArray(new String[permissionsList.size()]),
REQUEST_PHONE_PERMISSIONS); //进行权限申请
}
}else{
init();
}
复写回调方法。
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case REQUEST_PHONE_PERMISSIONS:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
init();
} else {
Toast.makeText(this, getString(R.string.need_permission),Toast.LENGTH_SHORT).show();
finish();
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}