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);
}
}