Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NetBlocker — Android 悬浮窗网络限制工具(Root + Shizuku 双后端)

通过悬浮窗一键对任意已安装应用做网络限制(WiFi + 移动数据),无需 VPN。 支持 Shizuku(优先)与 Root(兜底)两种执行后端。

  • 语言:Kotlin | minSdk 26(Android 8.0)| targetSdk 34(Android 14)
  • 架构:MVVM + 前台 Service + NetworkBlocker 后端抽象层
  • 依赖:Shizuku API 13.1.5、libsu 5.2.2、DataStore Preferences

项目结构

app/src/main/java/com/hewanglan/netblocker/
├── App.kt                        # Application:libsu 初始化
├── MainActivity.kt               # 权限引导 + 应用列表 + 搜索
├── core/
│   ├── NetworkBlocker.kt         # 后端统一接口
│   ├── BackendDetector.kt        # 后端探测(AUTO/SHIZUKU/ROOT)
│   ├── RuleEngine.kt             # 规则调度(开关动作统一入口)
│   └── AppContextHolder.kt       # 全局 Context
├── backend/
│   ├── IShellService.aidl        # Shizuku 用户服务 AIDL(aidl/ 目录)
│   ├── ShellService.kt           # shell uid 沙箱内执行命令(10s 超时)
│   ├── ShizukuBlocker.kt         # Chain 3 优先 + netpolicy 降级
│   └── RootBlocker.kt            # iptables 自定义链 NETBLOCK,幂等规则
├── data/
│   ├── AppRepository.kt          # 已安装应用与 UID 映射
│   └── RuleStorage.kt            # 规则持久化(DataStore)
├── service/
│   └── FloatingWindowService.kt  # 悬浮球/面板/前台应用检测
└── receiver/
    └── BootReceiver.kt           # 开机恢复规则

构建说明

  1. 用 Android Studio(Koala 以上,含 AGP 8.5 / JDK 17)打开本项目根目录;
  2. 首次同步会自动下载 Gradle 8.7 与依赖(Shizuku、libsu 来自 Maven Central / JitPack);
  3. Build > Build APK(s) 生成 APK。

仓库未包含 gradle-wrapper 二进制(jar),Android Studio 打开后会自动补齐;如需命令行构建,先运行一次 gradle wrapper。

权限激活步骤

  1. 悬浮窗:主界面点击"授权悬浮窗权限" → 在系统设置中允许显示在其他应用上层;
  2. Shizuku:安装 Shizuku → 通过无线调试或 Root 启动 → 回到本 App 点击"激活 Shizuku";
  3. 前台应用检测(悬浮窗一键断网需要):点击"授权前台应用检测" → 允许"使用情况访问权限";
  4. Root(可选兜底):在 Magisk/KernelSU 中授予本 App Root 权限。

两种后端的实现方式

后端 机制 说明
Shizuku cmd connectivity set-package-networking-enabled <bool> <pkg> Android 11+(Chain 3),等价系统联网控制;失败降级 cmd netpolicy add uid-policy <uid> 1(仅限制计费网络后台)
Root iptables -A NETBLOCK -m owner --uid-owner <uid> -j DROP 自定义链挂 OUTPUT,-C 判重幂等,-D 精准删除,-F NETBLOCK 一键清空

已知风险 / 待办(对应开发计划)

  • 部分厂商 ROM 阉割 cmd connectivity → 已留 netpolicy 降级路径,需实测机型矩阵(小米/华为/OPPO/vivo/三星/Pixel)
  • Shizuku 重启后授权失效的主动引导(当前仅提示)
  • nftables 原生语法路径(当前依赖 iptables-nft 兼容层,绝大多数 ROM 可用)
  • 卸载时自动清理 iptables 规则
  • 悬浮窗贴边吸附、常用应用快捷开关(最多 3-5 个)
  • 阶段五稳定性项:日志诊断、规则冲突检测、功耗控制
  • 阶段六:定时规则、分组管理、流量统计、桌面小组件、Tasker 集成

About

Android floating-window network blocker (Shizuku + Root dual backend, no VPN)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages