运用的是第三方库:可添加依赖:implementation ‘com.yanzhenjie:permission:2.0.0-rc11’
(AndPremission)
通过数组:
public static final String[] PermissionGroup = new String[]{
Permission.READ_PHONE_STATE,//手机配置
Permission.READ_EXTERNAL_STORAGE, Permission.WRITE_EXTERNAL_STORAGE, // 存储,读取文件
// Permission.READ_CONTACTS, Permission.GET_ACCOUNTS, // 存联系人
Permission.ACCESS_FINE_LOCATION, Permission.ACCESS_COARSE_LOCATION, // 位置
// Permission.CAMERA, // 相机
// Permission.RECORD_AUDIO // 麦克风
};
@Override
protected void onResume() {
super.onResume();
if (hadLifeCycle) {
return;
}
reqPers.clear();
for (String per : PermissionGroup) {
reqPers.add(per);
}
if (VERSION.SDK_INT < VERSION_CODES.M) {
jumpPermissions(); // 跳过权限
} else {
boolean boFristGetPermission = SharedPreferUtils.read_bool("SolashActivity", "fristGetPermission");
if (!boFristGetPermission) {
if (ruleDlg == null) {
ruleDlg = new RuleButAlertDialog(this).builder().setCancelable(false).
setTitle(getString(R.string.request_for_access)).
setMsg(getString(R.string.order_better_service) + getString(R.string.app_name) + getString(R.string.order_better_service_permissions) + "\r\n" + PermissionUtil.transformText(this, reqPers)).
setPositiveButton(getString(R.string.authorize_now), v1 -> {
getPermission();
ruleDlg = null;
});
ruleDlg.show();
}
} else {
getPermission();
}
}
}
public void getPermission() {
AndPermission.with(this)
.runtime()
.permission(PermissionGroup)
.onGranted(permissions -> {
jumpPermissions();
})
.onDenied(permissions -> {
if (PermissionUtil.refusedPers.size() > 0) {
PermissionUtil.refusedPers.clear();
}
if (PermissionUtil.caterPers.size() > 0) {
PermissionUtil.caterPers.clear();
}
for (String per : permissions) {
if (AndPermission.hasAlwaysDeniedPermission(this, per)) {
LogUtil.i("AddMultiDevActivity", "狠狠拒绝 : " + per);
PermissionUtil.refusedPers.add(per);
} else {
LogUtil.i("AddMultiDevActivity", "欲拒还迎 : " + per);
PermissionUtil.caterPers.add(per);
}
}
if (PermissionUtil.caterPers.size() > 0) {
new RuleAlertDialog(this).builder().setCancelable(false).
setTitle(null).
setMsg(getString(R.string.order_better_service) + getString(R.string.app_name) + getString(R.string.order_better_service_permissions) + "\r\n" + PermissionUtil.transformText(this, PermissionUtil.caterPers)).
setPositiveButton(getString(R.string.authorize_now), v1 -> {
getPermission();
}).setNegativeButton(getString(R.string.next_time_say), v2 -> {
finish();
}).show();
} else if (PermissionUtil.refusedPers.size() > 0) {
new Rule