How to start an application using Android ADB tools

AndroidAdb

Android Problem Overview


How do I send an intent using Android's ADB tools?

Android Solutions


Solution 1 - Android

adb shell
am start -n com.package.name/com.package.name.ActivityName

Or you can use this directly:

adb shell am start -n com.package.name/com.package.name.ActivityName

You can also specify actions to be filter by your intent-filters:

am start -a com.example.ACTION_NAME -n com.package.name/com.package.name.ActivityName 

Solution 2 - Android

It's possible to run an application specifying the package name only using the monkey tool by follow this pattern:

adb shell monkey -p your.app.package.name -c android.intent.category.LAUNCHER 1

The command is used to run the app using the monkey tool which generates random input for the application. The last part of the command is an integer which specifies the number of generated random input for the app. In this case the number is 1, which in fact is used to launch the app (icon click).

Solution 3 - Android

Or, you could use this:

adb shell am start -n com.package.name/.ActivityName

Solution 4 - Android

Linux and Mac users can also create a script to run an APK file with something like the following:

Create a file named "adb-run.sh" with these three lines:

pkg=$(aapt dump badging $1|awk -F" " '/package/ {print $2}'|awk -F"'" '/name=/ {print $2}')
act=$(aapt dump badging $1|awk -F" " '/launchable-activity/ {print $2}'|awk -F"'" '/name=/ {print $2}')
adb shell am start -n $pkg/$act

Then "chmod +x adb-run.sh" to make it executable.

Now you can simply:

adb-run.sh myapp.apk

The benefit here is that you don't need to know the package name or launchable activity name. Similarly, you can create "adb-uninstall.sh myapp.apk"

Note: This requires that you have Android Asset Packaging Tool (aapt) in your path. You can find it under the new build tools folder in the SDK.

Solution 5 - Android

Step 1: First get all the package names of the apps installed in your device, by using:

adb shell pm list packages

Step 2: You will get all the package names. Copy the one you want to start using ADB.

Step 3: Add your desired package name in the below command.

adb shell monkey -p 'your package name' -v 500

For example,

adb shell monkey -p com.estrongs.android.pop -v 500

to start the Es explorer.

Solution 6 - Android

Also, I want to mention one more thing.

When you start an application from adb shell am, it automatically adds FLAG_ACTIVITY_NEW_TASK flag which makes behavior change. See the code.

For example, if you launch a Play Store activity from adb shell am, pressing the 'Back' button (hardware back button) wouldn't take you your app. Instead, it would take you previous Play Store activity if there was some (if there was not a Play store task, then it would take you to your app). FLAG_ACTIVITY_NEW_TASK documentation says:

> if a task is already running for the activity you are now starting, then a new activity will not be started; instead, the current task will simply be brought to the front of the screen with the state it was last in

This caused me to spend a few hours to find out what went wrong.

So, keep in mind that adb shell am add FLAG_ACTIVITY_NEW_TASK flag.

Solution 7 - Android

We can as well start an application by knowing the application type and feeding it with data:

adb shell am start -d "file:///sdcard/sample.3gp" -t "video/3gp" -a android.intent.action.VIEW

This command displays available *video players to play a sample.3gp file.

Solution 8 - Android

Open file ~/.bash_profile, and add these Bash functions to the end of the file

function androidinstall(){
   adb install -r ./bin/$1.apk
}

function androidrun(){
   ant clean debug
   adb shell am start -n $1/$1.$2
}

Then open the Android project folder:

androidinstall app-debug && androidrun com.example.app MainActivity

Solution 9 - Android

The shortest command yet is the following:

adb shell monkey -p your.app.package.name 1

This will launch the default activity for the package that is in the launcher.

Thanks to Androiderson for the tip.

Solution 10 - Android

monkey --pct-syskeys 0 for development boards

This argument is needed for development boards without keys/display:

adb shell monkey --pct-syskeys 0 -p com.cirosantilli.android_cheat.textviewbold 1

Without it, the app won't open, and you will get an error message like:

SYS_KEYS has no physical keys but with factor 2.0%

It was tested on HiKey960, Android O AOSP.

Learned from: this GitHub issue

Also asked at: https://stackoverflow.com/questions/44860475/monkey-test-if-the-android-system-doesnt-has-physical-keys-what-are-the-param/46935037#46935037

Solution 11 - Android

You can find your app package name by the below command:

adb shell pm list packages

The above command returns a package list of all apps. Example:

org.linphone.debug
.
.
com.android.email

Now I want to start app linphone by using the below command and this worked for me:

adb shell am start org.linphone.debug

Solution 12 - Android

Use:

adb shell am start -n '<appPackageName>/.<appActitivityName>

Example:

adb shell am start -n 'com.android.settings/.wifi.WifiStatusTest'

You can use the APK-INFO application to know the list of app activities with respect to each app package.

Solution 13 - Android

adb shell am start -n com.app.package.name/com.java.package.name.ActivityName

Example

adb shell am start -n com.google.android.googlequicksearchbox/com.google.android.search.core.google.GoogleSearch

If the Java package is the same, then it can be shortened:

adb shell am start -n com.example.package/.subpackage.ActivityName

Solution 14 - Android

Try this, for opening an Android photo app and with the specific image file to open as a parameter.

adb shell am start -n com.google.android.apps.photos/.home.HomeActivity -d file:///mnt/user/0/primary/Pictures/Screenshots/Screenshot.png

It will work on latest version of Android. No pop up will come to select an application to open as you are giving the specific app to which you want to open your image with.

Solution 15 - Android

When you try to open a Flutter app, you can use this command:

adb shell am start -n com.package.name/io.flutter.embedding.android.FlutterActivity

Replace com.package.name with your package name. You find your package in your app/build.gradle at applicationId.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSeanView Question on Stackoverflow
Solution 1 - AndroidCristianView Answer on Stackoverflow
Solution 2 - AndroidMichalView Answer on Stackoverflow
Solution 3 - AndroidJoilnenView Answer on Stackoverflow
Solution 4 - AndroiddljavaView Answer on Stackoverflow
Solution 5 - AndroidTushar PandeyView Answer on Stackoverflow
Solution 6 - Android김준호View Answer on Stackoverflow
Solution 7 - AndroidAnvesh YalamarthyView Answer on Stackoverflow
Solution 8 - AndroidAbdullahDiaaView Answer on Stackoverflow
Solution 9 - AndroidLouis CADView Answer on Stackoverflow
Solution 10 - AndroidCiro Santilli Путлер Капут 六四事View Answer on Stackoverflow
Solution 11 - AndroidShiv BuyyaView Answer on Stackoverflow
Solution 12 - AndroidImSaleemView Answer on Stackoverflow
Solution 13 - AndroidrdsView Answer on Stackoverflow
Solution 14 - AndroidVarun SharmaView Answer on Stackoverflow
Solution 15 - AndroidNils ReichardtView Answer on Stackoverflow