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

问题描述 投票:0回答:17

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

android adb
17个回答
733
投票
adb shell
am start -n com.package.name/com.package.name.ActivityName

或者你可以直接使用这个:

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

您还可以指定要由您的意图过滤器过滤的操作:

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

395
投票

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

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

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


132
投票

或者,你可以使用这个:

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

65
投票

Linux 和 Mac 用户还可以创建脚本来运行 APK 文件,内容如下:

使用以下三行创建名为“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

这里的好处是你不需要知道包名或者launchable activity的名字。同样,您可以创建“adb-uninstall.sh myapp.apk”

注意:这需要您的路径中有Android Asset Packaging Tool (

aapt
)。您可以在 SDK 中的新构建工具文件夹下找到它。


34
投票

第1步:首先获取设备中安装的应用程序的所有包名,使用:

adb shell pm list packages

第二步:你会得到所有的包名。 复制你想开始使用的ADB.

第 3 步:在下面的命令中添加您想要的包名称。

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

例如,

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

启动Es explorer.


26
投票

最短的命令如下:

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

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

感谢 Androiderson 的提示.


25
投票

另外,我还想提一件事

当您从

adb shell am
启动应用程序时,它会自动添加 FLAG_ACTIVITY_NEW_TASK 标志,这会改变行为。见代码

例如,如果您从

adb shell am
启动 Play 商店活动,则按“Back”按钮(硬件后退按钮)不会将您带回到您的应用程序。相反,如果有的话,它会带你到之前的 Play 商店活动(如果没有 Play 商店任务,它会带你回到你的应用程序)。 FLAG_ACTIVITY_NEW_TASK 文档 说:

如果您现在开始的活动的任务已经在运行,则不会开始新的活动;相反,当前任务将以上次的状态简单地带到屏幕前面

这让我花了几个小时才找出问题所在。

所以,请记住

adb shell am
add FLAG_ACTIVITY_NEW_TASK 标志.


17
投票

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

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

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


16
投票

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

adb shell pm list packages

上述命令返回所有应用程序的包列表。例子:

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

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

adb shell am start org.linphone.debug

15
投票

打开文件~/.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

11
投票

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上测试过

学习自:this GitHub issue

也问:如何在没有物理按键的Android系统上使用monkey命令?


6
投票

用途:

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

例子:

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

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


2
投票
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

2
投票

用途:

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

得到

<appPackageName>
运行:

adb shell pm list packages

获取

<appActitivityName>
午餐应用程序并运行

adb shell dumpsys window | grep -E 'mCurrentFocus'


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 上运行。没有弹出窗口会选择要打开的应用程序,因为您正在提供要打开图像的特定应用程序。


0
投票

当你尝试打开一个 Flutter 应用时,你可以使用这个命令:

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

com.package.name
替换为您的包裹名称。您在
app/build.gradle
applicationId
中找到您的包裹。


0
投票

正确的方法是在启动前使用

cmd package resolve-activity
找到启动活动,这样你就可以启动

am start $(cmd package resolve-activity --brief com.package.name | tail -n 1)

© www.soinside.com 2019 - 2024. All rights reserved.