Android在shell中提供了 am 命令来发送Intent,它的源码为位于 frameworks/base/cmds/am.


它本身是用JAVA代码来实现的。


执行 am 命令其实是通过运行shell脚本 frameworks/base/cmds/am/am,然后在该脚本中运行 app_process 命令来启动am这个java程序的。


frameworks/base/cmds/am/am脚本文件如下:


# Script to start "am" on the device, which has a very rudimentary

# shell.

#

base=/system

export CLASSPATH=$base/framework/am.jar

exec app_process $base/bin com.android.commands.am.Am "$@"


am命令语法如下


am [subcommand] [options]








start an Activity: am start [-D] [-W] <INTENT>




-D: enable debugging




-W: wait for launch to complete








start a Service: am startservice <INTENT>








send a broadcast Intent: am broadcast <INTENT>








start an Instrumentation: am instrument [flags] <COMPONENT>




-r: print raw results (otherwise decode REPORT_KEY_STREAMRESULT)




-e <NAME> <VALUE>: set argument <NAME> to <VALUE>




-p <FILE>: write profiling data to <FILE>




-w: wait for instrumentation to finish before returning








start profiling: am profile <PROCESS> start <FILE>




stop profiling: am profile <PROCESS> stop








start monitoring: am monitor [--gdb <port>]




--gdb: start gdbserv on the given port at crash/ANR








<INTENT> specifications include these flags:




[-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]




[-c <CATEGORY> [-c <CATEGORY>] ...]




[-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...]




[--esn <EXTRA_KEY> ...]




[--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...]




[-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...]




[-n <COMPONENT>] [-f <FLAGS>]




[--grant-read-uri-permission] [--grant-write-uri-permission]




[--debug-log-resolution]




[--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]




[--receiver-registered-only] [--receiver-replace-pending]




[<URI>]