如何使用 Android 的 ADB 工具发送意图?
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
可以按照以下模式运行仅使用 monkey 工具指定包名称的应用程序:
adb shell monkey -p your.app.package.name -c android.intent.category.LAUNCHER 1
该命令用于使用为应用程序生成随机输入的猴子工具运行应用程序。命令的最后一部分是一个整数,它指定为应用程序生成的随机输入的数量。在这种情况下,数字为 1,实际上用于启动应用程序(单击图标)。
或者,你可以使用这个:
adb shell am start -n com.package.name/.ActivityName
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 中的新构建工具文件夹下找到它。
第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.
另外,我还想提一件事
当您从
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 标志.
我们也可以通过了解应用程序类型并为其提供数据来启动应用程序:
adb shell am start -d "file:///sdcard/sample.3gp" -t "video/3gp" -a android.intent.action.VIEW
此命令显示可用的*视频播放器来播放 sample.3gp 文件。
您可以通过以下命令找到您的应用程序包名称:
adb shell pm list packages
上述命令返回所有应用程序的包列表。例子:
org.linphone.debug
.
.
com.android.email
现在我想使用以下命令启动应用程序linphone,这对我有用:
adb shell am start org.linphone.debug
打开文件~/.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
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上测试过
用途:
adb shell am start -n '<appPackageName>/.<appActitivityName>
例子:
adb shell am start -n 'com.android.settings/.wifi.WifiStatusTest'
您可以使用 APK-INFO 应用程序了解每个应用程序包的应用程序活动列表。
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
用途:
adb shell am start -n '<appPackageName>/<appActitivityName>'
得到
<appPackageName>
运行:
adb shell pm list packages
获取
<appActitivityName>
午餐应用程序并运行
adb shell dumpsys window | grep -E 'mCurrentFocus'
试试这个,用于打开 Android 照片应用程序,并使用要打开的特定图像文件作为参数。
adb shell am start -n com.google.android.apps.photos/.home.HomeActivity -d file:///mnt/user/0/primary/Pictures/Screenshots/Screenshot.png
它将在最新版本的 Android 上运行。没有弹出窗口会选择要打开的应用程序,因为您正在提供要打开图像的特定应用程序。
当你尝试打开一个 Flutter 应用时,你可以使用这个命令:
adb shell am start -n com.package.name/io.flutter.embedding.android.FlutterActivity
将
com.package.name
替换为您的包裹名称。您在 app/build.gradle
的 applicationId
中找到您的包裹。
正确的方法是在启动前使用
cmd package resolve-activity
找到启动活动,这样你就可以启动
am start $(cmd package resolve-activity --brief com.package.name | tail -n 1)