android13 禁止用户修改指定APP运行时权限
不是系统APP,又希望用户不能手工关闭APP运行时权限,可以通过下面代码置灰关闭选项:
1、打开
/packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AllAppPermissionsFragment.java
在CtaMultiTargetSwitchPreference类增加代码:
private static final class CtaMultiTargetSwitchPreference extends MultiTargetSwitchPreference {CtaMultiTargetSwitchPreference(Context context, String permission,AppPermissionGroup appPermissionGroup) {super(context);setChecked(appPermissionGroup.areRuntimePermissionsGranted(new String[]{permission})); //add codeif(appPermissionGroup.getApp().packageName.equals("xx.xx.xx")){ setEnabled(false);}//add end.............................................}
2、打开
/packages/modules/Permission/PermissionController/src/com/android/permissioncontroller/permission/ui/handheld/AppPermissionFragment.java
在setButtonState方法增加代码:
private void setButtonState(CompoundButton button, AppPermissionViewModel.ButtonState state) {int visible = state.isShown() ? View.VISIBLE : View.GONE;button.setVisibility(visible);//add codeif (state.isShown()) {button.setChecked(state.isChecked());if(mPackageName.equals("xx.xx.xx")){button.setEnabled(false);} elsebutton.setEnabled(state.isEnabled());}//add endif (mIsInitialLoad) {button.jumpDrawablesToCurrentState();}}
3、上面置灰选项按钮,阻止用户修改APP权限,但是懂的pm命令的,还是可以在adb调试模式下通过pm grant ,pm revoke修改。
参考
Android pm命令参考_安卓 pm命令-CSDN博客
比如给APP增加摄像头权限,可以通过
pm grant yourapppackname android.permission.CAMERA
如果阻止通过pm 修改权限,参考链接,需要修改
/frameworks/base/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
case "grant":return runGrantRevokePermission(true);
case "revoke":return runGrantRevokePermission(false);
修改runGrantRevokePermission方法的处理即可。