The Android notification management framework (governed by NotificationManagerService) oversees how incoming alerts, status bar icons, heads-up popups, and lock-screen banners are presented to users. Modern Android versions enforce strict Notification Channels, channel groups, importance levels, rate limiters, and Do Not Disturb (DND) filtering rules. When an application\u2019s notifications fail to show up, get silenced unexpectedly, or spam the system tray, inspecting notification states through the device Settings menu provides only minimal insight. To inspect the full notification queue, check channel importance, and review notification listener bindings, the Android Debug Bridge (ADB) provides dumpsys notification.
Understanding Notification Architecture in Android
Every alert delivered to the user traverses NotificationManagerService:
- Notification Channels: Introduced in Android 8.0, channels allow users and applications to control alert behaviors (importance, sound, vibration, bypass DND) per category (e.g., Direct Messages vs Marketing Promotions).
- Importance Levels: Determines alert presentation (
IMPORTANCE_HIGHgenerates heads-up popups,IMPORTANCE_DEFAULTsounds an audible tone,IMPORTANCE_LOWappears silently in the tray,IMPORTANCE_NONEis completely blocked). - Enqueued Notifications: Alerts currently queued in memory awaiting posting, rate-limit evaluation, or user interaction.
- Notification Listeners: System or third-party services (e.g., wearable companion apps, smartwatches, or automation tools) granted permission to intercept status bar notifications.
Generating a Comprehensive Notification Dump
To inspect overall notification status and queue telemetry across your connected Android device:
adb shell dumpsys notification
Because this command produces extensive diagnostic output, filter the output by package name or section header for focused troubleshooting.
Inspecting Registered Notification Channels for an Application
To view all channels configured by an application and verify their effective importance:
adb shell dumpsys notification --channels com.example.myapp
The output reports each channel\u2019s parameters:
NotificationChannels for com.example.myapp (uid 10184):
NotificationChannel{
mId='order_updates'
mName=Order Updates
mImportance=4 (IMPORTANCE_HIGH)
mBypassDnd=false
mLockscreenVisibility=-1000
mSound=content://settings/system/notification_sound
mVibration=null
mDeleted=false
mUserLockedFields=0
}
NotificationChannel{
mId='promotions'
mName=Promotions
mImportance=2 (IMPORTANCE_LOW)
mBypassDnd=false
mDeleted=false
}
Key attributes to inspect:
- mImportance: Confirms whether the channel is configured to pop up (
4) or silent (2). If a user manually silences a channel in Settings,mUserLockedFieldsindicates that user preferences override app defaults. - mDeleted: Confirms if a channel was soft-deleted by the app. Deleted channels retain their ID in system storage to prevent re-creation abuse.
- mBypassDnd: Confirms whether critical alerts can pierce through active Do Not Disturb modes.
Inspecting Active and Enqueued Notifications
To inspect notifications currently displayed in the status bar or enqueued in the system pipeline:
adb shell dumpsys notification | grep -A 10 "NotificationRecord"
The record reveals detailed delivery metrics:
NotificationRecord(0x7c41a200: pkg=com.example.myapp user=UserHandle{0} id=101 tag=null score=10 key=0|com.example.myapp|101|null|10184: Notification(channel=order_updates pri=0 contentView=null vibrate=null sound=null tick text=Your order has shipped!))
postTime=1730977200 (10s ago)
importance=4
visibility=1
interruptionFilter=1
This allows you to verify that notifications are properly tagged, identify missing icons, and check post timestamps.
Auditing Connected Notification Listener Services
Wearable devices, automotive head units, and system widgets bind to Android via NotificationListenerService. To audit which third-party packages currently have access to intercept and read incoming notifications:
adb shell dumpsys notification | grep -A 15 "Notification listeners:"
The log lists active listener components:
Notification listeners:
Enabled:
com.google.android.wearable.app/com.google.android.clockwork.stream.notification.NotificationService
com.example.companion/com.example.companion.MyListenerService
Live:
ServiceRecord{7c458120 u0 com.example.companion/.MyListenerService}
This audit ensures no malicious or unauthorized applications are eavesdropping on incoming two-factor authentication SMS codes or private messages.
Resetting Notification Rate Limits and Clearing System Alerts
During heavy testing, Android may throttle applications that post excessive notifications in rapid succession. To reset system state and clear all posted notifications for a package via ADB:
adb shell cmd notification cancel com.example.myapp 101
Or cancel all notifications posted by the application across all channels:
adb shell cmd notification cancel-all com.example.myapp
This provides a clean status bar state, allowing repeatable end-to-end notification testing.