Android: the notification permission dialog is asked from the play button and blocks playback #212
Open
opened 2026-08-23 20:36:42 +00:00 by yonlu
·
0 comments
No Branch/Tag Specified
main
fix/146-stub-etxtbsy
fix/175-wizard-follows-the-library
fix/231-setter-rollback
fix/197-duplicate-column-label
docs/225-fixtures-wav-tags
docs/220-skill-check-scope
test/217-fixture-names-in-queue-selection
fix/216-riff-parse-allocation
fix/170-queue-header-action-names
fix/210-nav-sheet-scroll-affordance
docs/50-readme-landing-page
feat/65-art-prefetch-ahead
feat/71-more-as-a-bottom-sheet
feat/54-native-touch-feel
feat/67-entity-links-into-menus
test/196-visual-tier-gates
fix/138-ui-test-storage-leak
fix/104-wav-tags-read
fix/207-sheet-scroll-affordance
fix/204-ui-visual-update-filter
pi-agent-backlog-automation
63-touch-model-phase-2
63-android-touch-model
186-touch-targets-settings
186-touch-targets-page-header
187-seek-bar-hit-area
189-190-explore-correctness
135-android-underrun-instrumentation
51-android-small-screens
fix/171-phone-queue-scrim
fix/137-touch-only-affordances
fix/154-nested-css-check
feat/58-mini-player-progress-line
fix/66-album-page-scrolls-as-one
60-context-menu-action-sheet
64-android-system-volume
59-slim-the-mini-player
55-queue-as-a-screen
feat/57-drop-the-android-top-bar
feat/62-jobs-as-a-notification
fix/53-seek-bar-never-moves
fix/159-android-task-app-id
fix/52-android-activity-recreation-restarts-the-process
fix/150-expand-button-under-the-art
feat/42-inline-volume-and-centred-transport
fix/156-queue-selection-fixture-order
fix/151-fuse-the-scroll-guard-and-the-write
fix/43-queue-panel-selection
fix/143-top-bar-fits-its-window
feat/27-jobs-into-settings
feat/25-configurable-sidebar-tabs
feat/6-global-back-forward
fix/72-active-view-broadcast
fix/69-page-header-action-overflow
fix/quick-wins-batch
fix/118-in-library-clear
fix/61-mini-player-plain-text
fix/68-hover-affordances-pointer
fix/119-dev-headless-port
fix/130-issue-claim-user
fix/131-codegen-check-scope
feat/28-autotag-match-on-album
feat/17-demote-version-selector
feat/38-ownership-visibility
ci/115-manual-release
feat/34-icon-language
feat/7-full-tracklist-toggle
fix/16-tagwriter-totals
fix/unclaim-ca-certs
fix/unclaim-shell
ci/unclaim-on-close
docs/closing-keyword
docs/retire-stale-planning-docs
docs/issue-driven-workflow
integration/small-fixes
fix/small-issue-batch
fix/queue-toggle-state
fix/drag-count-badge
fix/album-card-year
fix/album-tracklist-heading
fix/seek-bar-clock-width
fix/explore-art-scanner-requests
chore/workflow-guardrails
v0.7.0
v0.6.0
v0.5.0
v0.4.0
v0.3.1
v0.3.0
v0.2.3
v0.2.2
v0.2.1
v0.2.0
v0.1.0
v0.0.1
v0.0.0
Labels
Clear labels
Area/Design
Area/Downloads
Area/Explore
Area/Library-UI
Area/Metadata
Area/Packaging
Area/Player
Area/Queue
Area/Settings
Area/Shell-Nav
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Platform/Android
Platform/Desktop
Breaking change that won't be backward compatible
Something is not working
Documentation changes
Improve existing functionality
New functionality
This is security issue
Issue or pull request related to testing
Priority
Critical
1
The priority is critical
Priority
High
2
The priority is high
Priority
Medium
3
The priority is medium
Priority
Low
4
The priority is low
Reviewed
Confirmed
1
Issue has been confirmed
Reviewed
Duplicate
2
This issue or pull request already exists
Reviewed
Invalid
3
Invalid issue
Reviewed
Won't Fix
3
This issue won't be fixed
Status
Blocked
1
Something is blocking this issue or pull request
Status
Need More Info
2
Feedback is required to reproduce issue or to continue work
Status
Abandoned
3
Somebody has started to work on this but abandoned work
Status
In Progress
Somebody is actively working on this right now
Milestone
No items
No Milestone
Projects
Clear projects
No projects
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: yonlu/yellowjacket#212
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Symptom
On the phone, pressing play on a fresh install pops the system
POST_NOTIFICATIONS permission dialog, and playback does not start
until the dialog is answered. The first thing the app does when asked
to play music is ask a question about notifications.
Reproduction
the app's data so the permission has never been answered).
it is dismissed.
Where it comes from
push()inbackend/mediacontrols/android.gocallsapplication.Android.StartForegroundService(payload)the moment thestate stops being
StateStopped— which is correct, and is what thecomment on
runningsays it is for. The Java half is what asks:WailsBridge.startForegroundService(
build/android/app/src/main/java/com/wails/app/WailsBridge.java,~line 1222) does
immediately before starting the service — scaffold code, but
build/android/is committed and hand-edited like source here, so itis ours to change.
postNotification(~line 757) does the same thingwith request code 1001.
That request is on the playback path, which is what makes it both a
badly-timed question and a plausible cause of the block: while a
system dialog is up the app is not top-of-stack, and on API 31+ a
startForegroundServicefrom that state is refused(
ForegroundServiceStartNotAllowedException), so the transportservice is exactly the thing that cannot start at the moment the
permission is being asked about. Worth confirming with logcat which
half of "nothing happens" is which — no audio at all, or audio with no
notification.
Direction
Two claims, and the second is the one that matters:
mediaPlaybackforeground service still starts and still runswithout POST_NOTIFICATIONS on Android 13+; what is lost is the
notification being shown. So the request should be fire-and-forget
beside the start, never a gate in front of it, and the start should
not be issued from a state the framework will refuse.
where it can be explained — first-run, or a Settings affordance
about lock-screen controls — so the first press of play is a press
of play. Failing that, ask it after the service is running rather
than before.
Worth checking on a device while fixing: whether audio genuinely stops
or only the notification is absent, and whether the service start is
refused (
ForegroundServiceStartNotAllowedExceptionin logcat).Not covered by any tier here
Per
AGENTS.md, no tier in this repo compiles theandroidfiles orcan see a permission dialog;
.pi/skills/yellowjacket-dev/references/android-tier.mdis where the device check belongs.