我如何使用Android的ADB工具发送一个意图?
当前回答
你可以通过下面的命令找到你的应用程序包名称:
adb shell pm list packages
上面的命令返回所有应用程序的包列表。例子:
org.linphone.debug
.
.
com.android.email
现在我想通过使用下面的命令启动应用程序linphone,这对我来说是有效的:
adb shell am start org.linphone.debug
其他回答
还有,我想再提一件事。
当你从adb shell am启动一个应用程序时,它会自动添加FLAG_ACTIVITY_NEW_TASK标志,使行为发生变化。请参阅代码。
例如,如果你从adb shell am启动一个Play Store活动,按下“后退”按钮(硬件后退按钮)不会带你回到你的应用程序。相反,它会带你到之前的Play Store活动,如果有一些(如果没有Play Store任务,那么它会带你回到你的应用程序)。FLAG_ACTIVITY_NEW_TASK文档说:
如果您正在启动的活动的任务已经在运行,那么新的活动将不会启动;相反,当前任务将被带到屏幕的前面,并显示它上次处于的状态
这让我花了几个小时来找出哪里出了问题。
因此,请记住adb shell am添加FLAG_ACTIVITY_NEW_TASK标志。
只使用monkey工具就可以运行指定包名的应用程序,如下所示:
adb shell monkey -p your.app.package.name -c android.intent.category.LAUNCHER 1
该命令用于使用monkey工具运行应用程序,该工具为应用程序生成随机输入。该命令的最后一部分是一个整数,它指定为应用程序生成的随机输入的数量。在本例中,数字为1,实际上用于启动应用程序(单击图标)。
Use:
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.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
或者,你可以用这个:
adb shell am start -n com.package.name/.ActivityName
推荐文章
- apk (.apk)和应用程序包(.aab)的区别
- 如何设置超时在改造库?
- Android - SPAN_EXCLUSIVE_EXCLUSIVE跨度不能为零长度
- TextView的字体大小在Android应用程序改变字体大小从本机设置
- 如何模拟Android杀死我的进程
- 禁用EditText闪烁光标
- Android Eclipse -无法找到*.apk
- 设置TextView文本从html格式的字符串资源在XML
- 如何允许所有网络连接类型HTTP和HTTPS在Android(9)馅饼?
- Android加载JS包失败
- Android Studio, logcat在应用程序关闭后清理
- 在android中从上下文获取活动
- 无法解析主机"<URL here>"没有与主机名关联的地址
- getActivity()在Fragment函数中返回null
- 按钮背景是透明的