意图拦截器——让应用打开别的应用时先问你
什么是 Intent 拦截器
Android 上应用之间通过 Intent(意图) 来通信和协作——你点浏览器里的链接,系统用 Intent 去问"谁能处理这个链接";你在文件管理器里选一张图片,系统用 Intent 去问"谁能打开图片"。
App Manager 的意图拦截器(Interceptor) 就是在这个环节插入——它能列出所有能处理某个 Intent 的 Activity,让你选择用哪个、甚至强制重定向。
怎么用拦截器
从主菜单进入
App Manager 三点菜单 → 标签(Labs)→ 意图拦截器。
实际场景
想象这个场景:你的浏览器里点了一个链接,系统弹出选择器让你选用哪个浏览器打开。通常弹一次选一次,或者设成默认就永远用默认。
拦截器可以:
- 重置默认——让你重新选择
- 强制用某个 Activity 打开——以后这个类型的 Intent 直接路由到你指定的 Activity
- 编辑 Intent 参数后再发送——给 Intent 加额外参数或修改 URI
拦截器页面结构
拦截器页面分三层:
- Intent 过滤器——定义要匹配什么类型的 Intent(Action、Category、Data scheme/host/path)
- 匹配的 Activity 列表——当前有哪些 Activity 能处理这个 Intent
- 拦截器规则——你设置了什么拦截规则
可以配置的规则:
| 规则 | 效果 |
|---|---|
| 强制用某个 Activity | 匹配 Intent 时直接路由到指定 Activity,不再弹窗 |
| 重置默认选择 | 清除系统已记住的默认处理者 |
| 编辑后发送 | 打开 Intent 编辑器,改 URI、加 extras 后再发出去 |
典型应用
| 场景 | 操作 |
|---|---|
| 想换浏览器处理链接 | 清除浏览器默认,强制用新浏览器 |
| 想换文件管理器打开文件 | 配置 file:// scheme 的 Intent 路由 |
| 想让所有 Intent 走特定 Activity | 设置通配规则 |
| 测试 Intent 路由行为 | 编辑 Intent 参数后观察哪个 Activity 被匹配 |
需要的权限
拦截器功能需要足够高的系统权限。在无 root 或未配 ADB 的情况下,拦截器可能只能做部分功能——重置默认选择是最基本的,强制路由需要更高权限。连接失败时(比如 ADB 断开)拦截器会自动回落到能做的最基本功能,界面上可能表现为某些选项灰掉或提示权限不足。