Launch App via adb without knowing Activity name [

2019-03-08 02:12发布

This question already has an answer here:

From the post Is it possible to start activity through adb shell?, we can start an Android app via adb by

adb shell am start -n yourpackagename/.activityname

But is it possible to start an Android app via adb without knowing the Activity name? For example, by sending the android.intent.action.MAIN intent to a package? Maybe some command like this:

adb shell am start -a android.intent.action.MAIN -n packageName

Thanks!!

-Cosmo

3条回答
狗以群分
2楼-- · 2019-03-08 02:14

Yes, it is possible to launch an app via adb shell making use of the monkey tool.

Using the command from this answer:

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

This command simulates the app icon click, so the intent implicit intent LAUNCHER is delivered to the specific receiver declared in app manifest (MAIN)

查看更多
▲ chillily
3楼-- · 2019-03-08 02:31

If you have the apk file, you can install and start the app using droidbot.

> droidbot -d emulator-5554 -a <xxx.apk> -install_app -policy none -count 0

DroidBot is based on adb, but it uses static analysis to extract the Activity name automatically.

查看更多
来,给爷笑一个
4楼-- · 2019-03-08 02:33

Using latest versions (at least API 25) you can start the default Activity, without knowing its name, and not using monkey:

PKG=com.android.calculator2
adb shell am start $PKG/$(adb shell cmd package resolve-activity -c android.intent.category.LAUNCHER $PKG | sed -n '/name=/s/^.*name=//p')
查看更多
登录 后发表回答