How to Inspect Notification Channels and Enqueued Alerts on Android Using ADB dumpsys notification

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_HIGH generates heads-up popups, IMPORTANCE_DEFAULT sounds an audible tone, IMPORTANCE_LOW appears silently in the tray, IMPORTANCE_NONE is 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, mUserLockedFields indicates 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.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.