• QQ
  • nahooten@sina.com
  • 常州市九洲新世界花苑15-2

Android

android am号令用法

原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/Android/2019/1016/681.html

 
 
 
一、概述
 
作为一位手机App外包开发者,相信对adb指令必然不会目生。辣么在手机持续adb后,可通过am号令做许多操纵:
 
 
 
(1) 拨打电话10086
 
 
 
adb shell am start -a android.intent.action.CALL -d tel:10086
 
(2) 翻开网站www.githuantian.com
 
 
 
adb shell am start -a android.intent.action.VIEW -d  http://githuantian.com
 
(3) 启动Activity: 启动包名为com.huantian.app,主Activity为.MainActivity,且extra数据以”website”为key, “huantianh.com”为value。通过java代码要实现该功效固然不复杂,但起码需求一个android环境,而通过adb的方法,只需求在adb窗口,输入如下号令便可实现:
 
 
 
am start -n com.huantian.app/.MainActivity -es website githuantian.com
 
am号令还可以启动Service、Broadcast,杀历程,监控等功效,这些功效都最方便调试程序,接下来报告对于am更多更详细的功效。
 
 
 
二、Am号令
 
号令花样:
 
 
 
am [subcommand] [options]
 
号令列表:
 
 
 
号令 功效 实现技巧
 
am start [options] <INTENT> 启动Activity startActivityAsUser
 
am startservice <INTENT> 启动Service startService
 
am stopservice <INTENT> 休止Service stopService
 
am broadcast <INTENT> 发送播送 broadcastIntent
 
am kill <PACKAGE> 杀指定后台历程 killBackgroundProcesses
 
am kill-all 杀所有后台历程 killAllBackgroundProcesses
 
am force-stop <PACKAGE> 强杀历程 forceStopPackage
 
am hang 体系卡住 hang
 
am restart 重启 restart
 
am bug-report 建立bugreport requestBugReport
 
am dumpheap <pid> <file> 历程pid的堆信息输出到file dumpheap
 
am send-trim-memory <pid> <level> 收紧历程的内存 setProcessMemoryTrimLevel
 
am monitor 监控 MyActivityController.run
 
am号令实的实现方法在Am.java,最终险些都是挪用ActivityManagerService响应的技巧来实现的,am monitor除外。好比前面概述中说明的号令am start -a android.intent.action.VIEW -d http://githuantian.com, 启动Acitivty最终挪用的是ActivityManagerService类的startActivityAsUser()技巧来实现的。再好比am kill-all号令,最终的实现事情是由ActivityManagerService的killBackgroundProcesses()技巧实现的。
 
 
 
接下来,说说[options]和 <INTENT>参数的作用以及若何精确取值。
 
 
 
三、 Options
 
3.1 启动Activity
 
主要是启动Activity号令am start [options] <INTENT>应用options参数,接下来枚举Activity号令的[options]参数:
 
 
 
-D: 允许调试功效
 
-W: 守候app启动实现
 
-R <COUNT>: 重复启动Activity COUNT次
 
-S: 启动activity以前,先挪用forceStopPackage()技巧强迫休止app.
 
–opengl-trace: 运转获取OpenGL函数的trace
 
–user <USER_ID> | current: 指定用户来运转App,默认为目前用户。
 
–start-profiler <FILE>: 启动profiler,并将后果发送到 <FILE>;
 
-P <FILE>: 相似 –start-profiler,差别的是当app进入idle状况,则休止profiling
 
–sampling INTERVAL: 配置profiler 取样时间隔断,单元ms;
 
启动Activity的实现道理: 存在-W参数则挪用startActivityAndWait()技巧来运转,否则startActivityAsUser()。
 
 
 
3.2 收紧内存
 
号令
 
 
 
am send-trim-memory  <pid> <level>
 
比方: 向pid=12345的历程,发出level=RUNNING_LOW的收紧内存号令
 
 
 
am send-trim-memory 12345 RUNNING_LOW。
 
辣么level取值局限为: HIDDEN、RUNNING_MODERATE、BACKGROUND、RUNNING_LOW、MODERATE、RUNNING_CRITICAL、COMPLETE。
 
 
 
3.3 其余
 
对于am的子号令,startservice, stopservice, broadcast, kill, profile start, profile stop, dumpheap的可选参数都允许配置--user <USER_ID>。目前市面上的绝大多数App开发培训手机或是单用户模式,故可以纰漏该参数,默认为目前用户。
 
 
 
比方:启动id=10010的用户的指定service。
 
 
 
am startservice --user 10010
 
四、 Intent
 
Intent的参数和flags较多,本文为利便起见,分为3品种型参数,常用参数,Extra参数,Flags参数。
 
 
 
4.1 常用参数
 
-a <ACTION>: 指定Intent action, 实现道理Intent.setAction();
 
-n <COMPONENT>: 指定组件名,花样为{包名}/.{主Activity名},实现道理Intent.setComponent();
 
-d <DATA_URI>: 指定Intent data URI
 
-t <MIME_TYPE>: 指定Intent MIME Type
 
-c <CATEGORY> [-c <CATEGORY>] ...]:指定Intent category,实现道理Intent.addCategory()
 
-p <PACKAGE>: 指定包名,实现道理Intent.setPackage();
 
-f <FLAGS>: 增加flags,实现道理Intent.setFlags(int ),紧接着的参数必需是int型;
 
实例
 
 
 
am start -a android.intent.action.VIEW
 
am start -n com.huantian.app/.MainActivity
 
am start -d content://contacts/people/1
 
am start -t image/png
 
am start -c android.intent.category.APP_CONTACTS
 
4.2 Extra参数
 
(1). 根基范例
 
 
 
参数 -e/-es -esn -ez -ei -el -ef -eu -ecn
 
范例 String (String)null boolean int long float uri component
 
好比参数es是Extra String首字母简称,实例:
 
 
 
am start -n com.huantian.app/.MainActivity -es website githuantian.com
 
此处-es website githuantian.com,等价于Intent.putExtra(“website”, “githuantian.com”);
 
 
 
(2). 数组范例
 
 
 
参数 -esa -eia -ela -efa
 
数组范例 String[] int[] long[] float[]
 
好比参数eia,是Extra int array首字母简称,多个value值之间以逗号隔开,实例:
 
 
 
am start -n com.huantian.app/.MainActivity -ela weekday 1,2,3,4,5
 
此处-ela weekday 1,2,3,4,5,等价于Intent.putExtra(“weekday”, new int[]{1,2,3,4,5});
 
 
 
(3). ArrayList范例
 
 
 
参数 -esal -eial -elal -efal
 
List范例 String int long float
 
好比参数efal,是Extra float Array List首字母简称,多个value值之间以逗号隔开,实例:
 
 
 
am start -n com.huantian.app/.MainActivity -efal nums 1.2,2.2
 
此处-efal nums 1.2,2.2,等价于先组织ArrayList变量,再通过putExtra放入第二个参数。
 
 
 
4.3 Flags参数
 
在参数范例1中,提到有-f <FLAGS>,是通过Intent.setFlags(int )技巧,来配置Intent的flags.本末节也是对于flags,是通过Intent.addFlags(int )技巧。如下所示,所有的flags参数。
 
 
 
[--grant-read-uri-permission] [--grant-write-uri-permission]
 
[--grant-persistable-uri-permission] [--grant-prefix-uri-permission]
 
[--debug-log-resolution]
 
[--exclude-stopped-packages] [--include-stopped-packages]
 
[--activity-brought-to-front] [--activity-clear-top]
 
[--activity-clear-when-task-reset] [--activity-exclude-from-recents]
 
[--activity-launched-from-history] [--activity-multiple-task]
 
[--activity-no-animation] [--activity-no-history]
 
[--activity-no-user-action] [--activity-previous-is-top]
 
[--activity-reorder-to-front] [--activity-reset-task-if-needed]
 
[--activity-single-top] [--activity-clear-task]
 
[--activity-task-on-home]
 
[--receiver-registered-only] [--receiver-replace-pending]
 
比方,发送action=”broadcast.demo”的播送,而且对于forceStopPackage()的运用不允许汲取该播送,号令如下:
 
 
 
am broadcast -a broadcast.demo --exclude-stopped-packages
 

上篇:上一篇:C/C++ 用MySql数据库的技巧
下篇:下一篇:C++与mysql连接遇到的问题