Android snapshot helper suppresses TalkBack; no verified reader-compatible input path
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 18/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- android, java
- Lĩnh vực
- accessibility, mobile
Hướng nghiên cứu
Start with the helper connection in android/snapshot-helper/src/main/java/com/callstack/agentdevice/snapshothelper/SnapshotInstrumentation.java, where getUiAutomation() is called without flags, and compare it with the Android UiAutomation flag the report cites. Reproducing needs an Android 16 emulator with TalkBack enabled, so check the report's dumpsys accessibility steps first. Done means TalkBack stays bound across a snapshot and an input, and a reader focus gesture produces the expected focus and speech events.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Android snapshot helper suppresses TalkBack; no verified reader-compatible input path
On Android 16, the T3-managed agent-device 0.21.31 snapshot helper leaves
TalkBack enabled in secure settings but unbound. Closing my own agent-device
session releases UiAutomation and TalkBack binds again. A subsequent long press
leaves it rebinding. This blocks actual TalkBack focus and speech validation.
Environment
- agent-device 0.21.31 through T3's device-bound command and managed daemon.
- Linux host, Android 16 emulator, API 36, 1080 by 2400 display.
- Android Accessibility Suite 16.0.0.738667889, version code 60149353.
- App under test: RenovioMobile debug build, package
io.renovio.mobile. - Observed on 2026-11-02 UTC. No installed helper patches or daemon configuration changes.
Reproduction
DEVICE below denotes the exact device-bound command returned by T3. Commands
must use the same owned session. These are the significant steps extracted from
the retained probes, not a separately executed standalone-daemon reproduction.
-
Open the app and capture a snapshot with TalkBack off:
"$DEVICE" open io.renovio.mobile --no-test-ime "$DEVICE" snapshot -i -
Enable the installed TalkBack service. The observed fixture saved the original
accessibility settings first and enabled TalkBack and touch exploration through
Android secure settings. Inspect the service state without another UI tool:adb -s emulator-5554 shell settings get secure enabled_accessibility_services adb -s emulator-5554 shell dumpsys accessibility -
Observe TalkBack in
Enabled services, emptyBound servicesand an active
Ui Automation[...]entry. Close only this owned session:"$DEVICE" closeTalkBack then appears in
Bound servicesand connects to TTS. -
In a separate probe, closing the named TalkBack package through the same
session preserved the exact app PID. Reopening the app and enabling TalkBack
permitted binding. The next long press left TalkBack inBinding services:"$DEVICE" close com.google.android.marvin.talkback "$DEVICE" open io.renovio.mobile --no-test-ime # Ensure TalkBack is enabled and bound before this input. "$DEVICE" press 300 350 --hold-ms 800
The point in step 4 is the observed probe coordinate. It demonstrates service
interruption, not a successful target-focus test.
Plain-tap countercheck
With no helper active, TalkBack stayed bound across a plain coordinate press.
The visible button had two matching bounds observations, [87,1557][993,1704],
wholly inside the display. Pressing its center, 540 1630, activated Login
instead of producing the button's TalkBack focus and completed speech.
The PID-filtered log contained completed startup utterances, but no accepted and
completed target-focus utterance for Continue as Project Owner. Normal press
may intentionally activate a control; I am not claiming it promises touch
exploration. This countercheck shows that closing the helper and using plain
press did not provide a working reader-testing alternative.
Suspected cause and requested support
Android documents that UiAutomation suppresses accessibility services unless
the caller requests
FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES.
The v0.21.36 helper connection
still calls getUiAutomation() without flags. This supports the suppression
explanation; v0.21.36 was inspected, not executed. The public helper-session
setting controls persistence and does not request non-suppression.
Please provide or document a supported mode that preserves TalkBack and permits
reader exploration and activation. The Android flag is a candidate repair for
service suppression, not a demonstrated fix for the input behavior.
Acceptance check
- TalkBack stays bound with touch exploration enabled across snapshots and input.
- A reader exploration gesture focuses a labelled button without activating it.
- For that gesture, the same TalkBack PID emits
TYPE_VIEW_ACCESSIBILITY_FOCUSED
with the expected label, accepts the TTS request and completes the utterance
within the action's observation window. Startup speech or snapshot labels do
not count. - A deliberate reader double tap activates the focused button once.
- Closing the owned session leaves the reader usable, and the test restores its
original accessibility and developer preferences.
Limits and related work
I have not tested a physical device, a standalone daemon, or v0.21.36 at runtime.
A public minimal APK or upstream test-app reproduction is not attached. The
retained app probes restored all four original accessibility secure keys and
TalkBack developer preferences. No full device logs containing app data are
included here.
Issue #851 concerns helper
ownership of UiAutomation. This report concerns coexistence with the actual
TalkBack service. Searches of issues and pull requests for TalkBack and
DONT_SUPPRESS_ACCESSIBILITY_SERVICES found no matching report on 2026-11-02 UTC.
- Ngôn ngữ chính
- TypeScript
- Star
- 5.2k
- Fork
- 359
- Merge trung bình
- 13 giờ 23 phút
- Pull request đã merge (30 ngày)
- 655
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của callstack/agent-device
-
iOS alert wait: the last poll can get ~30 ms and turns "no alert" into a failed readCó thể đã có người làm @pcbeingused333 đã nhận 3 ngày trước. Đang mởbug ready-for-agent
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 77/100
callstack/agent-device#4018 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
callstack/agent-device#1869 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Daemon: refuse leased requests that name no session at request admissionCó thể đã có người làm @airowe đã nhận hôm nay. Đang mởbug ready-for-agent
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 25/100
callstack/agent-device#4171 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement needs-triage
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
callstack/agent-device#4162 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 43/100
callstack/agent-device#4110 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của callstack/agent-device
Issue tương tự
-
ci-cd desktop size:low telemetry-improvement telemetry-round-1
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
vfarcic/dot-agent-deck#2079 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Broken links in the docsĐang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 83/100
Maintainer thường phản hồi trong vòng 1 ngày
-
status:in-linear
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
n8n-io/n8n#43006 · 3 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
🔊 a11y
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
betagouv/mon-entreprise#4726 ·
Maintainer thường phản hồi trong vòng 9 ngày