How to Inspect Searchable Activities and Global Search Providers on Android Using ADB dumpsys search

The Android Search Framework and SearchManagerService

In the Android operating system, search functionality spans two primary dimensions: in-app content discovery (where users search within a specific application’s data store) and global device search (where a unified interface like the Android Quick Search Box or home screen launcher searches across contacts, installed apps, documents, and media). To facilitate this without requiring every application to reinvent search UI components, the Android SDK provides the Search Framework managed centrally by the system’s SearchManagerService.

When an application registers a searchable activity, it defines search parameters in an XML resource file (searchable.xml) referenced in its Android Manifest. This configuration declares how search queries are routed, defines whether the app provides real-time search suggestions via a custom ContentProvider, configures voice search triggers, and determines whether the application participates in global device search. SearchManagerService parses and indexes these declarations at package installation time.

For Android developers, reverse engineers, and QA analysts, the Android Debug Bridge (ADB) exposes complete diagnostic inspection into these searchable registries through dumpsys search. This command outputs all registered searchable activities, suggestion content provider authorities, threshold character limits, and system search intent bindings.

Establishing an ADB Session and Checking Search Service Status

To inspect the search subsystem, connect your target Android device via USB or Wireless ADB, and ensure USB debugging is authorised:

# Verify device connectivity
adb devices -l

# Check that SearchManagerService is registered and active
adb shell service check search

If the service is operational, the shell returns Service search: found. You can now execute diagnostic dumps against the service.

Dumping Searchable Activities and Configurations via dumpsys search

Executing dumpsys search queries SearchManagerService and dumps the complete in-memory registry of searchable components across all installed applications:

# Dump complete search framework state
adb shell dumpsys search

The resulting output separates data into user profiles (e.g. User 0) and details the registered searchable activities:

Searchable activities:
  ComponentInfo{com.google.android.apps.messaging/com.google.android.apps.messaging.ui.search.SearchActivity}:
    autoUrlDetect: false
    hint: @2131953215
    icon: @0
    imeOptions: 0x00000003
    includeInGlobalSearch: false
    inputMethod: default
    inputType: 0x00000001
    searchButtonText: @0
    searchMode: 0x00000000
    searchSettingsDescription: @0
    suggestAuthority: com.google.android.apps.messaging.shared.search.SuggestionProvider
    suggestIntentAction: android.intent.action.VIEW
    suggestIntentData: null
    suggestPath: null
    suggestSelection: null
    suggestThreshold: 0
    voiceSearchMode: 0x00000000

Understanding Searchable Metadata Attributes

Each searchable component entry exposes vital operational parameters governing how Android routes user input:

  • ComponentInfo: The package name and fully qualified Java/Kotlin class name of the target activity that receives the ACTION_SEARCH intent.
  • suggestAuthority: The URI authority of the ContentProvider queried by the system to fetch live auto-complete search suggestions as the user types.
  • suggestThreshold: The minimum number of characters a user must enter before the system issues queries to the suggestion authority. A value of 0 triggers queries immediately upon opening the search interface.
  • includeInGlobalSearch: A boolean flag indicating whether the application’s search suggestions are exposed to the system-wide Quick Search Box or home screen search bar.
  • suggestIntentAction: The intent action triggered when a user taps a search suggestion (typically android.intent.action.VIEW).
  • voiceSearchMode: A bitmask indicating whether the search dialogue displays a microphone icon and routes voice audio through system speech recognisers.

Filtering Search Information for a Specific Application

On devices with hundreds of installed system and third-party apps, the full dump generates significant output. Filter the output using grep to isolate a specific application under test:

# Inspect searchable metadata for a specific application
adb shell dumpsys search | grep -A 20 "com.example.app"

Reviewing this filtered block allows developers to verify that their searchable.xml configurations and manifest intent filters were parsed correctly by the Android package manager.

Auditing Global Search Providers

Applications that set includeInGlobalSearch="true" register themselves as global search providers. The system aggregates these providers into a global searchable activity list that feeds system-wide search experiences.

To inspect the list of global search providers and verify which application serves as the primary web search provider:

# Inspect global search providers and system defaults
adb shell dumpsys search | grep -A 10 "Global search activities:"

Security engineers audit this list to ensure that untrusted third-party apps do not silently register as global providers or attempt to hijack device search queries.

Testing Search Intents and Activity Launch via ADB

Once you identify a searchable activity and its intent parameters via dumpsys search, you can simulate user searches directly from the command line using the Activity Manager (am):

# Trigger search intent targeting the application's searchable activity
adb shell am start -a android.intent.action.SEARCH \
    -n com.example.app/com.example.app.SearchActivity \
    --es query "network telemetry"

To query an application’s search suggestion provider directly using the Content Provider utility (content):

# Query suggestion provider for live search suggestions
adb shell content query --uri content://com.example.app.search/suggestions/net

Utilising dumpsys search provides end-to-end transparency into Android search plumbing, enabling robust debugging of in-app query routing, auto-complete suggestion providers, and global search integration.

Get the best tech tips delivered straight to your inbox.

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