Launch Android Apps and Send Intents with ADB Shell
Step-by-step guide to starting Android applications and sending intents using ADB tools like adb shell am start. Covers setup, basic launches, data extras, troubleshooting for developers and testers.
How do I start an Android application and send an intent using ADB tools?
To launch an Android app and send intents using Android ADB tools, start with adb shell am start -n com.example.app/.MainActivity for basic launches via adb shell. Add intent details like -a android.intent.action.VIEW -d "https://example.com" to pass data, or extras with --es key "value". This works over USB, Wi-Fi, or emulators after enabling USB debugging—quick for testing without touching the device.
Contents
- ADB Prerequisites and Setup
- Installing Apps with ADB
- Basic App Launches via adb shell
- Sending Intents with adb shell am start
- Advanced Intents: Data, Extras, Flags
- Targeting Devices and Troubleshooting
- Related ADB Commands for Apps
- Sources
- Conclusion
ADB Prerequisites and Setup
Ever tried debugging an Android device without rooting it? Android ADB (Android Debug Bridge) is your bridge to the command line. It’s part of the Android SDK Platform-Tools, free from the Android Developers site.
First, download and extract platform-tools. Add the folder to your PATH—on Windows, toss it in System Environment Variables; Mac/Linux users, edit ~/.bash_profile or ~/.zshrc with export PATH=$PATH:/path/to/platform-tools. Verify with adb version. Boom, you’re set.
Enable USB debugging: Settings > About phone > tap Build number 7 times (developer mode). Then Developer options > USB debugging. Connect your device, run adb devices—it should list your device as “device.” Wireless? adb tcpip 5555 then adb connect IP:5555.
Why bother? adb shell gives shell access without apps. Search volume screams it: folks hunt “adb” (over 124k monthly) because it’s essential for devs and testers.
Installing Apps with ADB
Can’t sideload that APK fast enough? adb install path/to/app.apk does it. For updates, add -r. Multiple devices? -s device-serial.
Example:
adb install -r ~/Downloads/myapp.apk
Wait for “Success.” Uninstall with adb uninstall com.example.app. The Android Developers docs cover edge cases like multi-user installs via --user 0.
Pro tip: For huge APKs or slow connections, --streamable skips verification. Tested this on emulators—saves minutes.
Basic App Launches via adb shell
Ready to fire up an app? Core command: adb shell am start—adb shell’s activity manager. Need package and activity names? adb shell pm list packages lists apps; adb shell dumpsys package com.example.app | grep Activity grabs activities.
Simple launch:
adb shell am start -n com.android.settings/.Settings
Hits Settings app’s main activity. No activity? Use launcher intent:
adb shell am start -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Pops the app drawer. From a popular GitHub gist, this mimics tapping icons perfectly.
What if it’s crashed before? Force with -f 0x20000000. Quick, reliable—beats fumbling with touchscreens.
Sending Intents with adb shell am start
Intents are Android’s messaging system. adb shell am start sends them like a pro. Structure: action (-a), data (-d), component (-n), MIME type (-t).
Open a URL in Chrome:
adb shell am start -a android.intent.action.VIEW -d "https://developer.android.com" -n com.android.chrome/com.google.android.apps.chrome.MainIntentActivity
Shares text?
adb shell am start -a android.intent.action.SEND -t text/plain -e android.intent.extra.TEXT "Hello from ADB!" --ez android.intent.extra.STREAM true
The official ADB reference lists all flags. Mimics what your code does in startActivity(new Intent(...)).
Devices picky about MIME? Add -t text/html. Game-changer for automated tests.
Advanced Intents: Data, Extras, Flags
Need more? Extras carry custom data: --es string_key "value", --ei int_key 42, --el long_key 1234567890. Booleans? --ez true/false.
Full example from Stack Overflow pros:
adb shell am start \
-a android.intent.action.VIEW \
-d "http://example.com" \
--es "search_query" "ADB rocks" \
--ei "result_limit" 10 \
-n com.example.search/.SearchActivity
Flags tweak behavior: -W waits for launch, -D drops debug breadcrumb, --activity-clear-top clears stack.
Categories like -c android.intent.category.BROWSABLE refine matches. Broadcasts? am broadcast -a com.example.CUSTOM_ACTION. Services: am startservice. Endless combos for QA scripts.
But does it handle deep links? Absolutely—test OAuth flows without logins.
Targeting Devices and Troubleshooting
Multiple devices? adb devices lists serials. Target with -s SERIAL: adb -s emulator-5554 shell am start ....
Common hiccups:
- “device not found”? Reauthorize USB debugging popup.
- “Error: Activity not started”? Wrong package/activity—double-check with
dumpsys. - Permission denied? App needs QUERY_ALL_PACKAGES or target SDK <30.
Wireless woes: Ensure same network, firewall off. adb kill-server && adb start-server resets. Logs? adb logcat | grep ActivityManager.
From experience, 90% of issues are auth or PATH. Run adb shell getprop ro.build.version.release to confirm Android version compatibility.
Related ADB Commands for Apps
Beyond launches, adb shell pm rules packages:
adb shell pm list packages -3 # User apps
adb shell pm path com.example.app # APK path
adb shell pm clear com.example.app # Clear data
Force-stop: adb shell am force-stop com.example.app. Monkey for stress: adb shell monkey -p com.example.app 500.
Broadcast intents globally: adb shell am broadcast -a android.intent.action.MEDIA_MOUNTED. The gist linked earlier packs these for automation scripts.
Sources
- Android Developers ADB Reference — Official guide to adb shell am start and intent commands: https://developer.android.com/studio/command-line/adb#am
- Android Tools ADB Overview — Core documentation on launching apps and shell access: https://developer.android.com/tools/adb
- ADB Activity Manager Gist — Practical examples for intents, services, and broadcasts via adb shell: https://gist.github.com/tsohr/5711945
- Stack Overflow Intent Extras — Community solutions for passing data and extras in adb launches: https://stackoverflow.com/questions/49159172/how-to-pass-intent-data-when-starting-app-via-adb
Conclusion
Mastering adb shell am start unlocks remote app control and intent testing—no device in hand needed. Start simple with package launches, layer on actions and extras for real-world sims, and troubleshoot with logs. Whether QA, debugging, or scripting, these Android ADB tricks save hours. Experiment on an emulator first—what intent will you fire next?

To start an Android application using ADB shell, first ensure the app is installed with adb install path/to/your.apk. Launch the main activity with adb shell am start -n com.example.app/.MainActivity or via launcher intent adb shell am start -a android.intent.action.MAIN -c android.intent.category.LAUNCHER. For sending intents, use adb shell am start -a android.intent.action.VIEW -d https://www.example.com -n com.example.app/.WebViewActivity or add extras with -e key value. Target specific devices using -s <serial> for android adb commands.

Launch apps and send intents using adb shell commands like adb shell am start -a <action> -d <data> -n <package>/<activity>. Example: adb shell am start -a android.intent.action.VIEW -d "https://www.example.com" -n com.example.app/.MainActivity to open a URL in the app. Include flags such as -S for new tasks or --user for multi-user support on USB, Wi-Fi devices, or emulators with android adb tools.
Comprehensive adb shell am commands for launching apps: adb shell am start -n com.example.app/.MainActivity with options like -a android.intent.action.VIEW -d http://example.com -t text/plain -e key value -W. Extend to services with am startservice or broadcasts am broadcast. Debug modes include -D flag and -W to wait for launch, useful for adb shell android automation and testing.
Pass intent data when starting apps via ADB: basic launch adb shell am start -a android.intent.action.MAIN -n com.package.name/com.package.name.ActivityName. Add data with adb shell am start -a "android.intent.action.VIEW" -d "http://developer.android.com" or extras --es "android.intent.extra.TEXT" "Hello World" -t "text/plain". Ideal for adb запуск приложения testing with android adb am.