Android 系统辅助功能按钮切换 Agent 到前台 #97

Closed
opened 2026-08-26 14:49:46 +08:00 by ila · 2 comments
Owner

来源与目标

用户于 2026-08-26 反馈:一加手机界面上的 Agent 辅助功能图标点击无反应,并明确要求点击后把 Agent 切换到最前面。

当前事实与根因

  • GoAutoAccessibilityService.openAgentStatus() 已有受控打开 Agent MainActivity 并切到“状态”Tab 的能力。
  • 当前 accessibility_service_config.xml 未声明 flagRequestAccessibilityButton。
  • 当前服务未注册 AccessibilityButtonController.AccessibilityButtonCallback,因此 Android 8+ 系统辅助功能按钮不会触发 Agent 前台切换。

实施范围

  • Android 8.0+ 在无障碍服务连接后注册系统辅助功能按钮回调,并在销毁时注销。
  • 服务配置增加 flagRequestAccessibilityButton。
  • 点击回调只调用既有 openAgentStatus():把 Agent 切到前台并显示“状态”Tab。
  • 对不支持或未分配辅助功能按钮的 ROM 安全降级,不崩溃、不循环拉起。
  • 增加纯 Kotlin 策略/回调测试;构建 Debug APK。
  • 在再次确认一加设备空闲后覆盖安装,检查版本和无障碍状态。

明确不做

  • 不创建自定义悬浮窗或额外图标。
  • 不因点击领取、创建、重置或重试任务。
  • 不打开 PDD、不点击控件、不修改地址、不创建订单、不支付。
  • 不改变后台 15 秒空闲返回规则。

设计证据

复用 Android 系统提供的辅助功能按钮和 Agent 已有“状态”页,交互为:

系统辅助功能按钮单击 → Agent MainActivity 前台 → 状态 Tab

没有新页面、新组件、布局或视觉资产;系统按钮负责原生触控反馈。根据既有小范围交互规范,采用上述低保真流程作为设计证据,免 QuantUX。UI/UX 校验重点:保持平台系统控件、单击行为可预测、无副作用、返回键正常。

验收标准

  • 系统辅助功能按钮由 GoAuto 服务接收时,单击可把 Agent 切到前台并显示状态 Tab。
  • 回调只触发一次前台导航,不触发任何任务或 PDD 行为。
  • Android 8 以下及按钮不可用时不崩溃。
  • 服务重连不重复注册;销毁时注销。
  • Android 单元测试与 Debug APK 构建通过。
  • 一加覆盖安装后版本仍为 0.6.0 / versionCode 10,配置与 Token 保留。
  • 无障碍服务保持开启;真机只验证前台切换,不验证采购。

文档影响

会改变 Android Agent 的系统入口和无障碍服务调用路径,需要更新 Architecture-and-Code-Map 与 Local-Development-and-Verification;不改变 API、业务状态或数据结构。

## 来源与目标 用户于 2026-08-26 反馈:一加手机界面上的 Agent 辅助功能图标点击无反应,并明确要求点击后把 Agent 切换到最前面。 ## 当前事实与根因 - `GoAutoAccessibilityService.openAgentStatus()` 已有受控打开 Agent `MainActivity` 并切到“状态”Tab 的能力。 - 当前 `accessibility_service_config.xml` 未声明 `flagRequestAccessibilityButton`。 - 当前服务未注册 `AccessibilityButtonController.AccessibilityButtonCallback`,因此 Android 8+ 系统辅助功能按钮不会触发 Agent 前台切换。 ## 实施范围 - Android 8.0+ 在无障碍服务连接后注册系统辅助功能按钮回调,并在销毁时注销。 - 服务配置增加 `flagRequestAccessibilityButton`。 - 点击回调只调用既有 `openAgentStatus()`:把 Agent 切到前台并显示“状态”Tab。 - 对不支持或未分配辅助功能按钮的 ROM 安全降级,不崩溃、不循环拉起。 - 增加纯 Kotlin 策略/回调测试;构建 Debug APK。 - 在再次确认一加设备空闲后覆盖安装,检查版本和无障碍状态。 ## 明确不做 - 不创建自定义悬浮窗或额外图标。 - 不因点击领取、创建、重置或重试任务。 - 不打开 PDD、不点击控件、不修改地址、不创建订单、不支付。 - 不改变后台 15 秒空闲返回规则。 ## 设计证据 复用 Android 系统提供的辅助功能按钮和 Agent 已有“状态”页,交互为: `系统辅助功能按钮单击 → Agent MainActivity 前台 → 状态 Tab` 没有新页面、新组件、布局或视觉资产;系统按钮负责原生触控反馈。根据既有小范围交互规范,采用上述低保真流程作为设计证据,免 QuantUX。UI/UX 校验重点:保持平台系统控件、单击行为可预测、无副作用、返回键正常。 ## 验收标准 - [ ] 系统辅助功能按钮由 GoAuto 服务接收时,单击可把 Agent 切到前台并显示状态 Tab。 - [ ] 回调只触发一次前台导航,不触发任何任务或 PDD 行为。 - [ ] Android 8 以下及按钮不可用时不崩溃。 - [ ] 服务重连不重复注册;销毁时注销。 - [ ] Android 单元测试与 Debug APK 构建通过。 - [ ] 一加覆盖安装后版本仍为 0.6.0 / versionCode 10,配置与 Token 保留。 - [ ] 无障碍服务保持开启;真机只验证前台切换,不验证采购。 ## 文档影响 会改变 Android Agent 的系统入口和无障碍服务调用路径,需要更新 Architecture-and-Code-Map 与 Local-Development-and-Verification;不改变 API、业务状态或数据结构。
Author
Owner

实施完成,待真机验收

  • 无障碍服务配置增加 flagRequestAccessibilityButton。
  • Android 8.0+ 服务连接时向系统 AccessibilityButtonController 注册单一回调,重连前先注销、销毁时注销;OEM 不支持时捕获异常并安全降级。
  • 单击回调只复用既有 openAgentStatus():打开 Agent 前台并显示“状态”Tab。
  • 未新增自定义浮窗;未接入任务领取、重试、PDD、改地址、创建订单或支付。
  • 新增纯 Kotlin 测试,覆盖 Android 8 版本门槛和一次点击只调用一次前台导航。
  • .\\gradlew.bat testDebugUnitTest assembleDebug:通过。
  • python dev_scripts/harness.py check --strict:通过。
  • Wiki 已更新并在线回读:
    • Architecture-and-Code-Map:ca5286cc8b94d2338109552599da8a91b339127c
    • Local-Development-and-Verification:f0fc4aa2d0664696addf62b26938a2331c393004
  • python dev_scripts/harness.py sync --check:通过。
  • 提交:d4066ac,已推送 main。

一加安装状态

最终 Debug APK 已在确认无活动任务后覆盖安装到一加 PKG110,版本仍为 0.6.0 / versionCode 10,配置与 Token 保留。ColorOS 在本次无障碍服务配置变化后自动关闭了该服务;未通过 ADB 强行开启,手机已打开无障碍设置页,需用户手动重新开启“采集采购助手”后点击系统辅助图标验收。

本次没有触发采集、采购、创建订单或支付。

## 实施完成,待真机验收 - 无障碍服务配置增加 `flagRequestAccessibilityButton`。 - Android 8.0+ 服务连接时向系统 `AccessibilityButtonController` 注册单一回调,重连前先注销、销毁时注销;OEM 不支持时捕获异常并安全降级。 - 单击回调只复用既有 `openAgentStatus()`:打开 Agent 前台并显示“状态”Tab。 - 未新增自定义浮窗;未接入任务领取、重试、PDD、改地址、创建订单或支付。 - 新增纯 Kotlin 测试,覆盖 Android 8 版本门槛和一次点击只调用一次前台导航。 - `.\\gradlew.bat testDebugUnitTest assembleDebug`:通过。 - `python dev_scripts/harness.py check --strict`:通过。 - Wiki 已更新并在线回读: - Architecture-and-Code-Map:`ca5286cc8b94d2338109552599da8a91b339127c` - Local-Development-and-Verification:`f0fc4aa2d0664696addf62b26938a2331c393004` - `python dev_scripts/harness.py sync --check`:通过。 - 提交:`d4066ac`,已推送 `main`。 ### 一加安装状态 最终 Debug APK 已在确认无活动任务后覆盖安装到一加 PKG110,版本仍为 0.6.0 / versionCode 10,配置与 Token 保留。ColorOS 在本次无障碍服务配置变化后自动关闭了该服务;未通过 ADB 强行开启,手机已打开无障碍设置页,需用户手动重新开启“采集采购助手”后点击系统辅助图标验收。 本次没有触发采集、采购、创建订单或支付。
Author
Owner

用户于 2026-08-28 明确确认本工单验收通过。按项目流程记录验收结论并关闭工单;本次仅更新工单状态,无新增长期文档事实,不重复同步 Wiki。

用户于 2026-08-28 明确确认本工单验收通过。按项目流程记录验收结论并关闭工单;本次仅更新工单状态,无新增长期文档事实,不重复同步 Wiki。
ila closed this issue 2026-08-28 15:07:22 +08:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/goauto#97