我如何使用Android的ADB工具发送一个意图?
当前回答
或者,你可以用这个:
adb shell am start -n com.package.name/.ActivityName
其他回答
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
打开文件~/。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
还有,我想再提一件事。
当你从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标志。
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
这样做的好处是您不需要知道包名或可启动活动名。类似地,你可以创建"adb-uninstall.sh myapp.apk"
注意:这需要你有Android资产打包工具(aapt)在你的路径。你可以在SDK的新构建工具文件夹中找到它。
推荐文章
- 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
- 按钮背景是透明的