Android自带的ADB工具是一个很强大的工具,我们可以用ADB来完成非常多的工作。
具体ADB的使用可以参考这篇文章:Android adb常用指令使用指南
如何安装一个android app程序,可以使用adb install ApkName.apk命令来实现,那么安装完成之后可不可以用命令行来启动它呢?
Of Course!!!
那么如何启动已经安装好的Android App程序吗?
我们可以在命令行输入一下内容:
- C:\Users\Administrator>adb shell am start -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -n net.micod
- e.fileexplorer/net.micode.fileexplorer.FileExplorerTabActivity
- Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=net.micode.fileexplorer/.Fi
- leExplorerTabActivity }
有同学要说,上面的命令太长了,不好记,老师,能不能给力点?
好的,我们可以精简下:
- C:\Users\Administrator>adb shell am start -n net.micode.fileexplorer/net.micode.fileexplorer.FileExplorerTabActivity
- Starting: Intent { cmp=net.micode.fileexplorer/.FileExplorerTabActivity }
- C:\Users\Administrator>
其中FileExplorerTabActivity是fileexplorer App应用程序的类名。
我们来看下adb shell am命令的帮助。
- C:\Users\Administrator>adb shell am
- usage: am [subcommand] [options]
- usage: am start [-D] [-W] [-P <FILE>] [--start-profiler <FILE>]
- [--R COUNT] [-S] <INTENT>
- am startservice <INTENT>
- am force-stop <PACKAGE>
- am kill <PACKAGE>
- am kill-all
- am broadcast <INTENT>
- am instrument [-r] [-e <NAME> <VALUE>] [-p <FILE>] [-w]
- [--no-window-animation] <COMPONENT>
- am profile [looper] start <PROCESS> <FILE>
- am profile [looper] stop [<PROCESS>]
- am dumpheap [flags] <PROCESS> <FILE>
- am set-debug-app [-w] [--persistent] <PACKAGE>
- am clear-debug-app
- am monitor [--gdb <port>]
- am screen-compat [on|off] <PACKAGE>
- am display-size [reset|MxN]
- am to-uri [INTENT]
- am to-intent-uri [INTENT]
- am start: start an Activity. Options are:
- -D: enable debugging
- -W: wait for launch to complete
- --start-profiler <FILE>: start profiler and send results to <FILE>
- -P <FILE>: like above, but profiling stops when app goes idle
- -R: repeat the activity launch <COUNT> times. Prior to each repeat,
- the top activity will be finished.
- -S: force stop the target app before starting the activity
- am startservice: start a Service.
- am force-stop: force stop everything associated with <PACKAGE>.
- am kill: Kill all processes associated with <PACKAGE>. Only kills.
- processes that are safe to kill -- that is, will not impact the user
- experience.
- am kill-all: Kill all background processes.
- am broadcast: send a broadcast Intent.
- am instrument: start an Instrumentation. Typically this target <COMPONENT>
- is the form <TEST_PACKAGE>/<RUNNER_CLASS>. Options are:
- -r: print raw results (otherwise decode REPORT_KEY_STREAMRESULT). Use with
- [-e perf true] to generate raw output for performance measurements.
- -e <NAME> <VALUE>: set argument <NAME> to <VALUE>. For test runners a
- common form is [-e <testrunner_flag> <value>[,<value>...]].
- -p <FILE>: write profiling data to <FILE>
- -w: wait for instrumentation to finish before returning. Required for
- test runners.
- --no-window-animation: turn off window animations will running.
- am profile: start and stop profiler on a process.
- am dumpheap: dump the heap of a process. Options are:
- -n: dump native heap instead of managed heap
- am set-debug-app: set application <PACKAGE> to debug. Options are:
- -w: wait for debugger when application starts
- --persistent: retain this value
- am clear-debug-app: clear the previously set-debug-app.
- am monitor: start monitoring for crashes or ANRs.
- --gdb: start gdbserv on the given port at crash/ANR
- am screen-compat: control screen compatibility mode of <PACKAGE>.
- am display-size: override display size.
- am to-uri: print the given Intent specification as a URI.
- am to-intent-uri: print the given Intent specification as an intent: URI.
- <INTENT> specifications include these flags and arguments:
- [-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> ...]
- [--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...]
- [--el <EXTRA_KEY> <EXTRA_LONG_VALUE> ...]
- [--eu <EXTRA_KEY> <EXTRA_URI_VALUE> ...]
- [--eia <EXTRA_KEY> <EXTRA_INT_VALUE>[,<EXTRA_INT_VALUE...]]
- [--ela <EXTRA_KEY> <EXTRA_LONG_VALUE>[,<EXTRA_LONG_VALUE...]]
- [-n <COMPONENT>] [-f <FLAGS>]
- [--grant-read-uri-permission] [--grant-write-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]
- [--selector]
- [<URI> | <PACKAGE> | <COMPONENT>]
- 来自:http://blog.csdn.net/tcpipstack/article/details/8553965
-
adb shell am使用此命令可以从cmd控制台启动 activity, services;发送 broadcast等等:
C:\Users\Administrator>adb shell am
usage: 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>]
使用实例:如启动一个 Activity:
格式:adb shell am start -n 包名/包名+类名(-n 类名,-a action,-d date,-m MIME-TYPE,-c category,-e 扩展数据,等)。实例1:C:\Users\Administrator>adb shell am start -n com.android.camera/.Camera
Starting: Intent { cmp=com.android.camera/.Camera }
实例2:(带extra 的 intent)C:\Users\Administrator>adb shell am start -n com.android.camera/.Camera -e abc hello
Starting: Intent { cmp=com.android.camera/.Camera (has extras) }其中 extra 的 key 为 abc ,value 为字串 "hello"
还可以发送命令模拟手机低电环境:实例:
adb shell am broadcast -a android.intent.action.BATTERY_CHANGED --ei "level" 3 --ei "scale" 100
- 来自:http://blog.csdn.net/fulinwsuafcie/article/details/8092459
在Android中,除了从界面上启动程序之外,还可以从命令行启动程序,使用的是命令行工具am.
usage: am [subcommand] [options]
start an Activity: am start [-D]
-D: enable debugging
send a broadcast Intent: am broadcast
start an Instrumentation: am instrument [flags]
-r: print raw results (otherwise decode REPORT_KEY_STREAMRESULT)
-e : set argument to
-p : write profiling data to
-w: wait for instrumentation to finish before returning
start profiling: am profile start
stop profiling: am profile stop
specifications include these flags:
[-a ] [-d ] [-t ]
[-c [-c ] ...]
[-e|--es ...]
[--ez ...]
[-e|--ei ...]
[-n ] [-f ] []
启动的方法为
$ adb shell
$ am start -n {包(package)名}/{包名}.{活动(activity)名称}
程序的入口类可以从每个应用的AndroidManifest.xml的文件中得到,以计算器(calculator)为例,它的
package="com.android.calculator2" …>…
由此计算器(calculator)的启动方法为:
# am start -n com.android.calculator2/com.android.calculator2.Calculator
对于HelloActivity这个示例工程,AndroidManifest.xml如下所示:
package="com.example.android.helloactivity" …>
由此它的启动方法为:
# am start -n com.example.android.helloactivity/com.example.android.helloactivity.HelloActivity
其他的一些应用启动命令,如下所示:
calendar(日历)的启动方法为:
# am start -n com.android.calendar/com.android.calendar.LaunchActivity
AlarmClock(闹钟)的启动方法为:
# am start -n com.android.alarmclock/com.android.alarmclock.AlarmClock
Music 和 Video(音乐和视频)的启动方法为:
# am start -n com.android.music/com.android.music.MusicBrowserActivity
# am start -n com.android.music/com.android.music.VideoBrowserActivity
# am start -n com.android.music/com.android.music.MediaPlaybackActivity
Camera(照相机)的启动方法为:
# am start -n com.android.camera/com.android.camera.Camera
Browser(浏览器)的启动方法为:
# am start -n com.android.browser/com.android.browser.BrowserActivity
一般情况希望,一个Android应用对应一个工程。值得注意的是,有一些工程具有多个活动(activity),而有一些应用使用一个工程。例如:在Android界面中,Music和Video是两个应用,但是它们使用的都是packages/apps/Music这一个工程。而在这个工程的AndroidManifest.xml文件中,有包含了不同的活动(activity)。
Music 和 Video(音乐和视频)的启动方法为:
# am start -n com.android.music/com.android.music.MusicBrowserActivity
# am start -n com.android.music/com.android.music.VideoBrowserActivity
# am start -n com.android.music/com.android.music.MediaPlaybackActivity
Camera(照相机)的启动方法为:
# am start -n com.android.camera/com.android.camera.Camera
Browser(浏览器)的启动方法为:
# am start -n com.android.browser/com.android.browser.BrowserActivity
启动浏览器 :
am start -a android.intent.action.VIEW -d http://www.google.cn/
拨打电话 :
am start -a android.intent.action.CALL -d tel:10086
启动 google map 直接定位到北京 :
am start -a android.intent.action.VIEW geo:0,0?q=beijing
url:http://greatverve.cnblogs.com/archive/2012/02/10/android-am.html
usage: am [subcommand] [options]
start an Activity: am start [-D]
-D: enable debugging
send a broadcast Intent: am broadcast
start an Instrumentation: am instrument [flags]
-r: print raw results (otherwise decode REPORT_KEY_STREAMRESULT)
-e : set argument to
-p : write profiling data to
-w: wait for instrumentation to finish before returning
start profiling: am profile start
stop profiling: am profile stop
specifications include these flags:
[-a ] [-d ] [-t ]
[-c [-c ] ...]
[-e|--es ...]
[--ez ...]
[-e|--ei ...]
[-n ] [-f ] []
启动的方法为
$ adb shell
$ am start -n {包(package)名}/{包名}.{活动(activity)名称}
程序的入口类可以从每个应用的AndroidManifest.xml的文件中得到,以计算器(calculator)为例,它的
package="com.android.calculator2" …>…
由此计算器(calculator)的启动方法为:
# am start -n com.android.calculator2/com.android.calculator2.Calculator
对于HelloActivity这个示例工程,AndroidManifest.xml如下所示:
package="com.example.android.helloactivity" …>
由此它的启动方法为:
# am start -n com.example.android.helloactivity/com.example.android.helloactivity.HelloActivity
其他的一些应用启动命令,如下所示:
calendar(日历)的启动方法为:
# am start -n com.android.calendar/com.android.calendar.LaunchActivity
AlarmClock(闹钟)的启动方法为:
# am start -n com.android.alarmclock/com.android.alarmclock.AlarmClock
Music 和 Video(音乐和视频)的启动方法为:
# am start -n com.android.music/com.android.music.MusicBrowserActivity
# am start -n com.android.music/com.android.music.VideoBrowserActivity
# am start -n com.android.music/com.android.music.MediaPlaybackActivity
Camera(照相机)的启动方法为:
# am start -n com.android.camera/com.android.camera.Camera
Browser(浏览器)的启动方法为:
# am start -n com.android.browser/com.android.browser.BrowserActivity
一般情况希望,一个Android应用对应一个工程。值得注意的是,有一些工程具有多个活动(activity),而有一些应用使用一个工程。例如:在Android界面中,Music和Video是两个应用,但是它们使用的都是packages/apps/Music这一个工程。而在这个工程的AndroidManifest.xml文件中,有包含了不同的活动(activity)。
Music 和 Video(音乐和视频)的启动方法为:
# am start -n com.android.music/com.android.music.MusicBrowserActivity
# am start -n com.android.music/com.android.music.VideoBrowserActivity
# am start -n com.android.music/com.android.music.MediaPlaybackActivity
Camera(照相机)的启动方法为:
# am start -n com.android.camera/com.android.camera.Camera
Browser(浏览器)的启动方法为:
# am start -n com.android.browser/com.android.browser.BrowserActivity
启动浏览器 :
am start -a android.intent.action.VIEW -d http://www.google.cn/
拨打电话 :
am start -a android.intent.action.CALL -d tel:10086
启动 google map 直接定位到北京 :
am start -a android.intent.action.VIEW geo:0,0?q=beijing
url:http://greatverve.cnblogs.com/archive/2012/02/10/android-am.html