如何使用Android ADB工具启动应用程序?

时间:2010-12-31 03:33:07

标签: android adb

如何使用Android的ADB工具发送意图?

14 个答案:

答案 0 :(得分:560)

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

或者你可以直接使用它:

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

您还可以指定要由intent-filters过滤的操作:

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

答案 1 :(得分:253)

可以按照以下模式运行仅使用 monkey 工具指定包名称的应用程序:

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

命令用于使用猴子工具运行应用程序,该工具为应用程序生成随机输入。命令的最后一部分是整数,它指定了为app生成的随机输入的数量。在这种情况下,数字为1,实际上用于启动应用程序(图标点击)。

答案 2 :(得分:117)

或者,你可以使用它:

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

答案 3 :(得分:58)

linux / mac用户还可以使用以下内容创建运行apk的脚本:

使用以下3行创建名为“adb-run.sh”的文件:

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

然后“chmod + x adb-run.sh”使其可执行。

现在你可以简单地说:

adb-run.sh myapp.apk

这样做的好处是您不需要知道包名称或可启动活动名称。同样,您可以创建“adb-uninstall.sh myapp.apk”

注意:这要求您遵循自己的道路。您可以在SDK中的新构建工具文件夹下找到它。

答案 4 :(得分:18)

另外,我还想提一件事。

当您从adb shell am启动应用程序时, 会自动添加FLAG_ACTIVITY_NEW_TASK标记 ,这会导致行为发生变化。请参阅code

例如,如果您从adb shell am启动Play商店活动,请按' 返回'按钮(硬件后退按钮)不会带你的应用程序,相反,如果有一些(如果没有Play商店任务,那么它会带你到你的应用程序)它会带你以前的Play商店活动。 FLAG_ACTIVITY_NEW_TASK documentation说:

  

如果任务已在您正在启动的活动中运行,则不会启动新活动;相反,当前任务将被简单地带到屏幕的前面,其状态是最后一次

这导致我花了几个小时来找出问题所在。

因此,请注意adb shell am 添加FLAG_ACTIVITY_NEW_TASK标记

答案 5 :(得分:15)

我们也可以通过了解应用程序类型并向其提供数据来启动应用程序:

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

此命令显示可用的视频播放器以播放 sample.3gp 文件

答案 6 :(得分:14)

打开〜/ .bash_profile 并将这些bash函数添加到文件的末尾

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

然后打开Android项目文件夹

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

答案 7 :(得分:8)

第1步:首先使用以下方法获取设备中安装的所有应用程序的软件包名称:

adb shell pm list packages

步骤2:您将获得所有软件包名称,复制您要开始使用adb的软件包名称。

步骤3:在下面的命令中添加所需的软件包名称。

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

  

例如:
adb shell monkey -p com.estrongs.android.pop -v 500   启动Es Explorer。

答案 8 :(得分:5)

monkey --pct-syskeys 0用于开发板

如果没有此参数,应用程序将无法在没有键/显示的开发板上打开:

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

并失败并显示错误:

SYS_KEYS has no physical keys but with factor 2.0%

在HiKey960,Android O AOSP上测试。

了解到:https://github.com/ARM-software/lisa/pull/408

还问:monkey test : If the Android system doesnt has physical keys ,what are the parameters need to be includeded in the command

答案 9 :(得分:2)

您可以通过以下命令找到您的应用程序包名称:

adb shell pm list packages

以上命令返回所有应用的包列表,示例:

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

现在我想使用以下命令启动应用程序 linphone,这对我有用:

adb shell am start org.belphone.debug

答案 10 :(得分:2)

最短的命令如下:

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

这将为启动器中的包启动默认活动。

感谢@Androiderson 的提示

答案 11 :(得分:0)

试试这个,打开一个Android照片应用&将特定图像文件作为参数打开。

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

它将适用于最新的Android,没有弹出窗口会选择要打开的应用程序,因为您提供了要打开图像的特定应用程序

答案 12 :(得分:0)

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

例如:

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

您可以使用APK-INFO应用程序来了解每个应用程序包的应用程序活动列表

答案 13 :(得分:0)

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

示例

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

如果Java包相同,那么可以缩短

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