当前位置: 首页 > news >正文

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方法的处理即可。

  

http://www.xdnf.cn/news/601381.html

相关文章:

  • 前端vue2-完全前端生成pdf->pdf-lib,html2canvas+jspdf,原生打印,三种方式(打印带有echarts图的pdf)
  • 【论文精读】2023 AAAI--FastRealVSR现实世界视频超分辨率(RealWorld VSR)
  • 学习黑客TTryHackMe — Tcpdump基础 | 网络安全入门(THM)
  • 【AS32X601驱动系列教程】SMU_系统时钟详解
  • Flume的大概简单介绍
  • 微信小程序:列表项上同样的css样式在IOS上字体大小不一样
  • 原创|查询大数据级数据表的AI实现思路(Excel2SQL,Text2SQL)
  • POI模板生成EXCEL 64000 style in a .xlsx Workbook
  • 数字信号处理大实验2 利用FFT估计信号的频率
  • QML与C++联合编程
  • OpenSSL详解
  • 【数据架构06】可信数据空间架构篇
  • MySQL 8.0 OCP 1Z0-908 题目解析(13)
  • MySQL 8.0 OCP 英文题库解析(八)
  • MySQL 8.0 OCP 1Z0-908 题目解析(12)
  • debian搭建ceph记录(接入libvirt)
  • 打破双亲委派模型的实践:JDBC与Tomcat的深度解析
  • RISC-V 开发板 MUSE Pi Pro OpenCV结合Gstreamer实时显示CSI摄像头
  • 03 基于 java udp 做一个dns服务器 和 一个dns代理服务器
  • Android Raspberry 请求 api 失败 iOS 请求成功【ssl 证书配置问题】
  • Android计算机网络学习总结
  • 【KWDB 创作者计划】_玩转数据库——纯硬核的工业级KWDB数据库产品评测报告(附测试代码)
  • Linux火墙管理及优化
  • 力扣-将x减到0的最小操作数
  • 【Hadoop】大数据技术之 HDFS
  • 对接钉钉消息样例:DING消息、机器人
  • vue3前端开发过程中,解决跨域
  • 如何管理固定资产
  • w~大模型~合集4
  • JAVA05基本数据类型和包装类的转换,转换成其他数据类型,包装类与字符串的转换+学生类的定义实例