主要关于adb shell 中的命令(am 、pm、input等):

一、am:

我们可以通过命令启动android中的Activity,Service,BroadcastReceiver 等组件

位置: framework/base/cmd

1. 拨打一个电话:

am start -a android.intent.action.CALL -d tel:10086

这里-a表示动作,-d表述传入的数据,还有-t表示传入的类型。

2. 打开一个网页:

am start -a android.intent.action.VIEW -dhttp://www.baidu.com (这里-d表示传入的data)

3. 打开音乐播放器:

am start -a android.intent.action.MUSIC_PLAYER 或者

包名和应用名可以在Androidmanifest.xml文件查看到

am start -n com.android.music/om.android.music.MusicBrowserActivity

4. 启动一个服务:

am startservice

例如:am startservice -n com.android.music/com.android.music.MediaPlaybackService

(这里-n表示组件)

或者   am startservice -a com.smz.myservice (这里-a表示动作,就是你在Androidmanifest里定义的)

5. 发送一个广播:

am broadcast -a

例如:

am broadcast -a com.smz.mybroadcast

am broadcast -a com.company.application.tag.action -e key value -e speech_content 请说我是好孩子 -e ui_show true

6、启动一个activity

adb shell am start -n 包名/包名+类名(-n 类名,-a action,-d date,-m MIME-TYPE,-c category,-e 扩展数据,等)

实例1:

am start -n com.android.camera/.Camera

实例2:(带extra 的 intent)

am start -n com.android.camera/.Camera -e abc hello

Starting: Intent { cmp=com.android.camera/.Camera (has extras) }

其中 extra 的 key 为 abc ,value 为字串 "hello"

extra中的值 类型不同可以  通过 -ei el 等标识

Intent参数:

[-a ]  action字符串

[-d ]  传入数据

[-t ] 数据类型

[-c [-c ] ...]

[-e|--es ...]

[--esn ...]

[--ez ...]

[--ei ...]

[--el ...]

[--ef ...]

[--eu ...]

[--ecn ]

[--eia [,

[--ela [,

[--efa [,

[-n ]  组件一般是全路经: 包名/类名全路径

[-f ]

二、pm

位置: framework/base/cmd

1、pm install 安装apk文件,貌似 adb install 就是调的这个方法

-l: install the package with FORWARD_LOCK.

-r: reinstall an exisiting app, keeping its data.

-t: allow test .apks to be installed.

-i: specify the installer package name.

-s: install package on sdcard.

-f: install package on internal flash.

pm install xxx.apk

2、pm uninstall 包名     卸载一个程序

pm uninstall: removes a package from the system. Options:

-k: keep the data and cache directories around after package removal.

三、input 往系统中注入

位置: framework/base/cmd

1、输入文字,限英文,符号和数字,中文不可以

input text  hello

2、输入键盘字符

input keyevent 23  输入回车

具体keyevent code 到 keyevent中查找

四、svc 命令

位置: framework/base/cmd

1.svc命令这个脚本在/system/bin目录下,这个命令可以用来控制电源管理,wifi开关,数据开关(就是上网流量)

2.svc power stayon [true|false|usb|ac] 这个是控制usb插入的时候屏幕是否常亮,这个有地方设置,就不多说了

svc power

Control the power manager

usage: svc power stayon [true|false|usb|ac]

Set the 'keep awake while plugged in'setting.//设置屏幕的常亮,true保持常亮,false不保持,usb当插入usb时常亮,ac当插入电源时常亮

3、# svc data

# svc data

svc data

Control mobile data connectivity

usage: svc data [enable|disable]

Turn mobile data on or off.//设置移动网络的数据是否启用

svc data prefer

Set mobile as the preferred data network//设置移动网络的数据优先于WIFI

.svc data disable这个命令可以关闭数据连接,就是上网流量,大家都知道控制上网的开关很多,但是大都是通过在apn上的接入点加后缀来实现的,但是这个命令不会更改apn的任何设置,直接在底层关闭数据连接。

应该是最彻底的,而且又不影响apn的设置。

这个跟apndroid有什么区别,apndroid是在关闭上网数据的时候,已经在下载的连接可能不会被强制关闭(这个在apndroid自己的说明中也有提到)。比如你在下载一个10M的电影,下载了1M,不响下载了。用apndroid关闭连接,可能这个下载还会继续,不会马上停掉。

但是用这个命令,绝对毫不留情的咔嚓掉。

4.svc data enable这个是打开上网数据连接,跟上一个命令是相反的。

5 svc data prefer这个命令是控制3g数据连接比wifi优先。我们都知道,正常情况下,有wifi的时候,不会用到3g连接。但是这个命令是相反,有3g的话先用3g流量,没有3g的时候采用wifi.我想大家不会这么傻吧,所以这个命令没什么用。

6. svc wifi

# svc wifi

svc wifi

Control the Wi-Fi manager

usage: svc wifi [enable|disable]

Turn Wi-Fi on or off.//设置WIFI是否启用

svc wifi prefer

Set Wi-Fi as the preferred data network//设置WIFI优先于移动网络的数据,一般应设置成这样,除非你刻意使用移动网络数据传输

svc wifi disable关闭wifi 连接

7 svc wifi enable开启wifi连接

8 svc wifi prefer设置wifi优先,跟5是相反的。

上面的命令都要在shell中执行,需要root。

参考:

五、wpa_supplicant  wpa_cli

六、netd