主要关于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 -d http://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 扩展数据,等)
am start -n com.android.camera/.Camera -e abc hello
Starting: Intent { cmp=com.android.camera/.Camera (has extras) }
extra中的值 类型不同可以 通过 -ei el 等标识
Intent参数:
[-a <ACTION>] 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> ...]
[--ef <EXTRA_KEY> <EXTRA_FLOAT_VALUE> ...]
[--eu <EXTRA_KEY> <EXTRA_URI_VALUE> ...]
[--ecn <EXTRA_KEY> <EXTRA_COMPONENT_NAME_VALUE>]
[--eia <EXTRA_KEY> <EXTRA_INT_VALUE>[,<EXTRA_INT_VALUE...]]
[--ela <EXTRA_KEY> <EXTRA_LONG_VALUE>[,<EXTRA_LONG_VALUE...]]
[--efa <EXTRA_KEY> <EXTRA_FLOAT_VALUE>[,<EXTRA_FLOAT_VALUE...]]
[-n <COMPONENT>] 组件一般是全路经: 包名/类名全路径
[-f <FLAGS>]
二、pm
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 往系统中注入
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。
参考:
http://www.cnblogs.com/healthy-tree/archive/2012/05/31/2528135.html
http://blog.csdn.net/liucheng2009/article/details/6565540