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

android如何在framework层禁止指定包名访问网络

本文思路来源于:

sprdroid_t1\packages\modules\Connectivity\tests\cts\net\src\android\net\cts\ConnectivityManagerTest.java

1、启用防火墙链路

    private static void setFirewallChainEnabled(Context context, int chain, boolean enable) {ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);try {Class<?> clz = Class.forName("android.net.ConnectivityManager");Method method = clz.getMethod("setFirewallChainEnabled", int.class, boolean.class);method.setAccessible(true);method.invoke(connectivityManager, chain, enable);Log.e(TAG, "setFirewallChainEnabled: success");} catch (IllegalAccessException | InvocationTargetException | ClassNotFoundException |NoSuchMethodException e) {e.printStackTrace();Log.e(TAG, "setFirewallChainEnabled: failed --> " + e);}}

2、对指定uid应用启用防火墙规则

    private static void setUidFirewallRule(Context context, int chain, final int uid, int rule) {ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);try {Class<?> clz = Class.forName("android.net.ConnectivityManager");Method method = clz.getMethod("setUidFirewallRule", int.class, int.class, int.class);method.setAccessible(true);method.invoke(connectivityManager, chain, uid, rule);Log.e(TAG, "setUidFirewallRule: success");} catch (IllegalAccessException | InvocationTargetException | ClassNotFoundException |NoSuchMethodException e) {e.printStackTrace();Log.e(TAG, "setUidFirewallRule: failed --> " + e);}}

3、接口封装

/*** 限制指定包名应用是否可以访问网络** 需要权限(android.uid.system):* android.permission.NETWORK_SETTINGS* android.permission.NETWORK_STACK* android.permission.MAINLINE_NETWORK_STACK** @param pkg com.mmbox.xbrowser* @param allowNetwork 是否允许访问网络*/private static void setPackageNetworkPolicy(Context context, String pkg, boolean allowNetwork) {new Thread(new Runnable() {@Overridepublic void run() {try {ApplicationInfo ai = context.getPackageManager().getApplicationInfo(pkg, PackageManager.GET_ACTIVITIES);int uid = ai.uid;setFirewallChainEnabled(context, 2, true);setUidFirewallRule(context, 2, uid, allowNetwork ? 1 : 2);} catch (PackageManager.NameNotFoundException e) {throw new RuntimeException(e);}}}).start();}

4、在framework代码中任意可以执行到的地方调用

//禁止X浏览器访问网络
setPackageNetworkPolicy(this, "com.mmbox.xbrowser", false);

测试用例1,禁止访问网络:
setPackageNetworkPolicy(this, “com.mmbox.xbrowser”, false);
在这里插入图片描述
在这里插入图片描述

测试用例2,允许访问网络:
setPackageNetworkPolicy(this, “com.mmbox.xbrowser”, true);
在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/a/541185.html

相关文章:

  • 输电线路绝缘子缺陷检测数据集VOC+YOLO格式4061张5类别
  • Git 完全指南:入门篇
  • 上海牛巨微seo关键词优化怎么做网站的seo优化
  • 温州网站制作软件凌晨三点看的片免费
  • 【Java +AI |基础篇day4 数组】
  • 麒麟系统使用-在Sublime中达到滚屏效果
  • 泰州网站关键词优化软件咨询新网站友链
  • 行政还要负责网站建设新媒体吗7000元买一个域名做网站
  • 前端常用的环境 API 清单
  • CreArt 2.5.6| 无限AI图片生成,需要注意的是点创建之后切出去几秒再切回来
  • 现金流量表不平排查方法
  • 深入理解 HTTP Cookie 与 Session:会话管理的核心机制
  • 【Windows】CoInitializeEx 和 CoUninitialize() 必须在同一个线程中调用吗?
  • 网站建设职责要求saas建站平台
  • 优秀国外网站设计赏析郑州企业网站优化哪家便宜
  • 机器学习、深度学习、信号处理领域常用公式速查表
  • 各类服装网站建设软件正版化情况及网站建设情况
  • 服务器端护照识别技术:通过图像预处理、OCR字符识别和智能分析实现高效身份核验
  • 武胜网站建设敬请期待海报
  • 基于Vue的高校教师文件管理系统7h274l7n(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • Surface-Book-3 i7-1065G7-i5-1035G7 黑苹果 EFI
  • 北京汽车业务网站开发公司建设银行网站网址是什么
  • 多组分精准监测标杆:NHVOC-70 型系列挥发性有机物 (TVOC) 在线监测系统技术解析与场景落地
  • 动态人脸识别技术解析
  • 为迎战双十一,南凌科技发布「大促网络保障解决方案」,以确定性网络抵御不确定流量洪峰
  • 动作捕捉设备应用场景全解析:涵盖机器人开发与数字人交互的多元实践
  • SQL调优专题笔记:打造你的数据库性能优化思维体系
  • AtCoder真题及详细题解 ABC425B: Find Permutation 2
  • 电子机箱网站建设报告上海百度做网站
  • web渗透知识总结