☰
拦截Android现代Session安装:InxLocker的CONFIRM_INSTALL拦截功能完全指南
2026/10/16 17:57:08 网站建设 项目流程

【免费下载链接】InxLocker

Xposed-based Installer Locker for Android (Powered by YukiHookAPI)

项目地址:https://gitcode.com/gh_mirrors/in/InxLocker
点击查看免费下载

InxLocker 是一款基于 Xposed(libxposed / YukiHookAPI)的 Android 安装器锁定模块,核心功能之一是拦截现代 Android 系统的 Session 安装确认请求(CONFIRM_INSTALL),把系统自带的安装确认界面重定向到你指定的第三方安装器。本文带你从零理解 Session 安装拦截的原理,并完成「拦截 CONFIRM_INSTALL」功能的完整配置。

一、什么是 Session 安装,为什么要拦截它?

从 Android 11(API 30)开始,系统引入PackageInstallerSession 机制:应用不再直接通过INSTALL_PACKAGEIntent 完成安装,而是先创建一个安装会话(Session),随后由系统弹出CONFIRM_INSTALL(android.content.pm.action.CONFIRM_INSTALL)确认界面。深度定制系统(如某些国产 ROM)会在这一环节强制把安装请求拉回系统安装器,导致第三方安装器"失灵"。

InxLocker 的做法是:Hook 系统的 Activity 分发入口,捕获CONFIRM_INSTALL/CONFIRM_PERMISSIONS两个 Intent,并将其重定向到你选择的安装器,从而"锁住"安装入口。

拦截逻辑源码速览

判断"是否重定向"的核心在 IntentAnalyzer.kt:

  • CONFIRM_INSTALL/CONFIRM_PERMISSIONS动作只有在开关intercept_session_install打开时才会被重定向
  • 重定向动作由 IntentRedirector.kt 执行:清空原有组件、把目标包名设为你选定的安装器,并附加FLAG_GRANT_READ_URI_PERMISSION权限标志

💡 简单说:你开启「拦截会话安装」开关后,所有走 Session 通道的安装确认界面都会先经过 InxLocker 的"检查站",再被交棒给你的目标安装器。

二、一键开启拦截:CONFIRM_INSTALL 配置步骤

  1. 安装并激活模块
    • 安装 InxLocker 后,在 Xposed 管理器(推荐 LSPosed)中激活本模块
    • 作用域至少勾选System Framework(系统框架),这是拦截系统级安装分发的关键
    • 重启系统(或重启被勾选的进程)
  2. 选择默认安装器
    • 打开 InxLocker,在「默认安装器设置」中选择目标安装器(如第三方包管理器)
    • 若列表中的应用选择后无法被调起,可长按该条目开启"强制组件调用"
  3. 开启会话安装拦截
    • 在「拦截会话安装(Intercept Session Install)」卡片打开开关
    • 界面文案对应 strings.xml 中的"拦截 CONFIRM_INSTALL 请求"
    • 该开关写入的偏好键为intercept_session_install,定义见 PrefsProvider.kt

三、Android 14+ 专属:修复会话路径权限

Android 14(API 34)引入了READ_INSTALLED_SESSION_PATHS权限保护:第三方应用默认无法读取 Session 安装路径,部分安装器会因此读不到 APK。

InxLocker 提供实验性「修复权限(Fix Permissions)」开关:

  • 开启后会 HookContextImpl.checkCallingOrSelfPermission,在会话生成阶段对该权限检查直接返回通过(返回 0),实现见 HookEntry.kt
  • 同时修补PackageInstallerSession.generateInfoInternal生成信息中缺失的resolvedBaseCodePath(HookEntry.kt)
  • ⚠️ 该选项为实验性功能,仅在 Android 14+ 且已开启会话安装拦截时才显示,见 MainActivity.kt

🔧 注意:关闭「拦截会话安装」时,「修复权限」开关会被自动关闭(MainActivity.kt),避免无意义的权限绕过。

四、Hook 点分布:InxLocker 在哪里拦截?

模块通过 HookEntry.kt 在两层注入 Hook:

层级Hook 目标作用
系统服务(system_server)ActivityStarter.execute(API 28+)拦截系统级 Activity 分发,覆盖 Session 安装确认
应用进程Activity.startActivity/startActivityForResult拦截普通应用发出的安装请求

所有捕获到的 Intent 统一交给handleIntentIfNeeded判定与重定向(HookEntry.kt)。

五、常见问题与注意事项

  • 模块状态:若界面显示"模块未激活",请回到 Xposed 管理器检查模块是否已勾选并重启
  • 热重载:InxLocker 基于 libxposed api 102 支持热重载(Hot Reload),更新模块后无需重启系统即可刷新 Hook,见 HookEntry.kt
  • 隐藏图标:隐藏桌面图标后,需通过 Xposed 管理器模块列表进入设置界面
  • 作用范围:本功能拦截的是"确认界面"的分发,最终安装仍由目标安装器发起
  • 开源协议:项目遵循 GPLv3,见 LICENSE

小结

InxLocker 的 CONFIRM_INSTALL 拦截功能,本质是用 Xposed 把 Android 现代 Session 安装的"必经之路"接进你的工具箱:选一个你信任的安装器,打开「拦截会话安装」开关,再在 Android 14+ 按需打开「修复权限」,即可把深度定制系统的安装入口牢牢锁在自己手里。

【免费下载链接】InxLocker

Xposed-based Installer Locker for Android (Powered by YukiHookAPI)

项目地址:https://gitcode.com/gh_mirrors/in/InxLocker
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询