通过在adb直接输入am命令可看到说明信息,分为两个部分,一个是命令,一个是Intent参数。
Activity manager (activity) commands:
help
Print this help text.
start-activity [-D] [-N] [-W] [-P ] [--start-profiler ]
[--sampling INTERVAL] [--streaming] [-R COUNT] [-S]
[--track-allocation] [--user | current]
Start an Activity. Options are:
-D: enable debugging
-N: enable native debugging
-W: wait for launch to complete
--start-profiler : start profiler and send results to
--sampling INTERVAL: use sample profiling with INTERVAL microseconds
between samples (use with --start-profiler)
--streaming: stream the profiling output to the specified file
(use with --start-profiler)
-P : like above, but profiling stops when app goes idle
--attach-agent : attach the given agent before binding
--attach-agent-bind : attach the given agent during binding
-R: repeat the activity launch times. Prior to each repeat,
the top activity will be finished.
-S: force stop the target app before starting the activity
--track-allocation: enable tracking of object allocations
--user | current: Specify which user to run as; if not
specified then run as the current user.
--windowingMode : The windowing mode to launch the activity into.
--activityType : The activity type to launch the activity as.
--display : The display to launch the activity into.
start-service [--user | current]
Start a Service. Options are:
--user | current: Specify which user to run as; if not
specified then run as the current user.
start-foreground-service [--user | current]
Start a foreground Service. Options are:
--user | current: Specify which user to run as; if not
specified then run as the current user.
stop-service [--user | current]
Stop a Service. Options are:
--user | current: Specify which user to run as; if not
specified then run as the current user.
broadcast [--user | all | current]
Send a broadcast Intent. Options are:
--user | all | current: Specify which user to send to; if not
specified then send to all users.
--receiver-permission : Require receiver to hold permission.
--allow-background-activity-starts: The receiver may start activities
even if in the background.
instrument [-r] [-e ] [-p ] [-w]
[--user | current]
[--no-hidden-api-checks [--no-test-api-access]]
[--no-isolated-storage]
[--no-window-animation] [--abi ]
Start an Instrumentation. Typically this target is in the
form / or only if there
is only one instrumentation. Options are:
-r: print raw results (otherwise decode REPORT_KEY_STREAMRESULT). Use with
[-e perf true] to generate raw output for performance measurements.
-e : set argument to . For test runners a
common form is [-e [,...]].
-p : write profiling data to
-m: Write output as protobuf to stdout (machine readable)
-f : Write output as protobuf to a file (machine
readable). If path is not specified, default directory and file name will
be used: /sdcard/instrument-logs/log-yyyyMMdd-hhmmss-SSS.instrumentation_data_proto
-w: wait for instrumentation to finish before returning. Required for
test runners.
--user | current: Specify user instrumentation runs in;
current user if not specified.
--no-hidden-api-checks: disable restrictions on use of hidden API.
--no-test-api-access: do not allow access to test APIs, if hidden
API checks are enabled.
--no-isolated-storage: don't use isolated storage sandbox and
mount full external storage
--no-window-animation: turn off window animations while running.
--abi : Launch the instrumented process with the selected ABI.
This assumes that the process supports the selected ABI.
trace-ipc [start|stop] [--dump-file ]
Trace IPC transactions.
start: start tracing IPC transactions.
stop: stop tracing IPC transactions and dump the results to file.
--dump-file : Specify the file the trace should be dumped to.
profile start [--user current]
[--sampling INTERVAL | --streaming]
Start profiler on a process. The given argument
may be either a process name or pid. Options are:
--user | current: When supplying a process name,
specify user of process to profile; uses current user if not
specified.
--sampling INTERVAL: use sample profiling with INTERVAL microseconds
between samples.
--streaming: stream the profiling output to the specified file.
profile stop [--user current]
Stop profiler on a process. The given argument
may be either a process name or pid. Options are:
--user | current: When supplying a process name,
specify user of process to profile; uses current user if not
specified.
dumpheap [--user current] [-n] [-g]
Dump the heap of a process. The given argument may
be either a process name or pid. Options are:
-n: dump native heap instead of managed heap
-g: force GC before dumping the heap
--user | current: When supplying a process name,
specify user of process to dump; uses current user if not specified.
set-debug-app [-w] [--persistent]
Set application to debug. Options are:
-w: wait for debugger when application starts
--persistent: retain this value
clear-debug-app
Clear the previously set-debug-app.
set-watch-heap
Start monitoring pss size of , if it is at or
above then a heap dump is collected for the user to report.
clear-watch-heap
Clear the previously set-watch-heap.
clear-exit-info [--user | all | current] [package]
Clear the process exit-info for given package
bug-report [--progress | --telephony]
Request bug report generation; will launch a notification
when done to select where it should be delivered. Options are:
--progress: will launch a notification right away to show its progress.
--telephony: will dump only telephony sections.
force-stop [--user | all | current]
Completely stop the given application package.
crash [--user ]
Induce a VM crash in the specified package or process
kill [--user | all | current]
Kill all background processes associated with the given application.
kill-all
Kill all processes that are safe to kill (cached, etc).
make-uid-idle [--user | all | current]
If the given application's uid is in the background and waiting to
become idle (not allowing background services), do that now.
monitor [--gdb ]
Start monitoring for crashes or ANRs.
--gdb: start gdbserv on the given port at crash/ANR
watch-uids [--oom ]
Start watching for and reporting uid state changes.
--oom: specify a uid for which to report detailed change messages.
hang [--allow-restart]
Hang the system.
--allow-restart: allow watchdog to perform normal system restart
restart
Restart the user-space system.
idle-maintenance
Perform idle maintenance now.
screen-compat [on|off]
Control screen compatibility mode of .
package-importance
Print current importance of .
to-uri [INTENT]
Print the given Intent specification as a URI.
to-intent-uri [INTENT]
Print the given Intent specification as an intent: URI.
to-app-uri [INTENT]
Print the given Intent specification as an android-app: URI.
switch-user
Switch to put USER_ID in the foreground, starting
execution of that user if it is currently stopped.
get-current-user
Returns id of the current foreground user.
start-user [-w]
Start USER_ID in background if it is currently stopped;
use switch-user if you want to start the user in foreground.
-w: wait for start-user to complete and the user to be unlocked.
unlock-user [TOKEN_HEX]
Attempt to unlock the given user using the given authorization token.
stop-user [-w] [-f]
Stop execution of USER_ID, not allowing it to run any
code until a later explicit start or switch to it.
-w: wait for stop-user to complete.
-f: force stop even if there are related users that cannot be stopped.
is-user-stopped
Returns whether has been stopped or not.
get-started-user-state
Gets the current state of the given started user.
track-associations
Enable association tracking.
untrack-associations
Disable and clear association tracking.
get-uid-state
Gets the process state of an app given its .
attach-agent
Attach an agent to the specified , which may be either a process name or a PID.
get-config [--days N] [--device] [--proto] [--display ]
Retrieve the configuration and any recent configurations of the device.
--days: also return last N days of configurations that have been seen.
--device: also output global device configuration info.
--proto: return result as a proto; does not include --days info.
--display: Specify for which display to run the command; if not
specified then run for the default display.
supports-multiwindow
Returns true if the device supports multiwindow.
supports-split-screen-multi-window
Returns true if the device supports split screen multiwindow.
suppress-resize-config-changes
Suppresses configuration changes due to user resizing an activity/task.
set-inactive [--user ] true|false
Sets the inactive state of an app.
get-inactive [--user ]
Returns the inactive state of an app.
set-standby-bucket [--user ] active|working_set|frequent|rare
Puts an app in the standby bucket.
get-standby-bucket [--user ]
Returns the standby bucket of an app.
send-trim-memory [--user ]
[HIDDEN|RUNNING_MODERATE|BACKGROUND|RUNNING_LOW|MODERATE|RUNNING_CRITICAL|COMPLETE]
Send a memory trim event to a . May also supply a raw trim int level.
display [COMMAND] [...]: sub-commands for operating on displays.
move-stack
Move from its current display to .
stack [COMMAND] [...]: sub-commands for operating on activity stacks.
move-task [true|false]
Move from its current stack to the top (true) or
bottom (false) of .
resize-docked-stack []
Change docked stack to
and supplying temporary different task bounds indicated by
move-top-activity-to-pinned-stack:
Moves the top activity from
to the pinned stack using for the
bounds of the pinned stack.
positiontask
Place in at
list
List all of the activity stacks and their sizes.
info
Display the information about activity stack in and .
remove
Remove stack .
task [COMMAND] [...]: sub-commands for operating on activity tasks.
lock
Bring to the front and don't allow other tasks to run.
lock stop
End the current task lock.
resizeable [0|1|2|3]
Change resizeable mode of to one of the following:
0: unresizeable
1: crop_windows
2: resizeable
3: resizeable_and_pipable
resize
Makes sure is in a stack with the specified bounds.
Forces the task to be resizeable and creates a stack if no existing stack
has the specified bounds.
update-appinfo [...]
Update the ApplicationInfo objects of the listed packages for
without restarting any processes.
write
Write all pending state to storage.
compat [COMMAND] [...]: sub-commands for toggling app-compat changes.
enable|disable|reset
Toggles a change either by id or by name for .
It kills (to allow the toggle to take effect).
enable-all|disable-all .
reset-all
Removes all existing overrides for all changes for
(back to default behaviour).
It kills (to allow the toggle to take effect).
specifications include these flags and arguments:
[-a ] [-d ] [-t ] [-i ]
[-c [-c ] ...]
[-n ]
[-e|--es ...]
[--esn ...]
[--ez ...]
[--ei ...]
[--el ...]
[--ef ...]
[--eu ...]
[--ecn ]
[--eia [, [,)
[--ela [, [,)
[--efa [, [,)
[--esa [, [,; to embed a comma into a string,
escape it using ",")
[-f ]
[--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] [--activity-match-external]
[--receiver-registered-only] [--receiver-replace-pending]
[--receiver-foreground] [--receiver-no-abort]
[--receiver-include-background]
[--selector]
[ | | ]
启动Activity
- 显式启动,常规启动使用:
am start packageName/ActivityName
隐式启动:
am start -a actionName pacakgeName
- 系统应用启动
am start -W com.oppo.camera
- 普通应用想通过包名启动,分两个阶段
//1.通过monkey命令查询b得到启动activity(关注 + Using main activity这一行即可!!!) monkey -v -v -v -p com.example.component -c android.intent.category.LAUNCHER 0 bash arg: -v bash arg: -v bash arg: -v bash arg: -p bash arg: com.example.component bash arg: -c bash arg: android.intent.category.LAUNCHER bash arg: 0 args: [-v, -v, -v, -p, com.example.component, -c, android.intent.category.LAUNCHER, 0] arg: "-v" arg: "-v" arg: "-v" arg: "-p" arg: "com.example.component" arg: "-c" arg: "android.intent.category.LAUNCHER" arg: "0" data="com.example.component" data="android.intent.category.LAUNCHER" .ConversationList (from package com.android.mms) // - NOT USING main activity com.coloros.weather.main.view.WeatherMainActivity (from package com.coloros.weather2) // - NOT USING main activity com.dianping.v1.NovaMainActivity (from package com.dianping.v1) // - NOT USING main activity com.duowan.kiwi.simpleactivity.SplashActivity (from package com.duowan.kiwi) // - NOT USING main activity com.eg.android.AlipayGphone.AlipayLogin (from package com.eg.android.AlipayGphone) // + Using main activity com.example.component.MainActivity (from package com.example.component) // - NOT USING main activity com.mc10086.cmcc.base.StartPageActivity (from package com.greenpoint.android.mc10086.activity) // - NOT USING main activity com.heytap.health.oobe.LaunchActivity (from package com.heytap.health) ## Network stats: elapsed time=49ms (0ms mobile, 0ms wifi, 49ms not connected) // Monkey finished //2.获取activity再结合包名启动(参考前面)启动Service
am startservice am stopservice发送广播
给未启动应用发送广播,用于启动
//参考intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES) am broadcast -a com.example.component.StartAction -f 32 com.example.component //必须以静态广播方式注册启动instrument测试(自动化测试很多使用这里的原理)
am instrument 测试apk包名/测试apk中的Instrumentaion实现类,原生是AndroidJUnitRunner



