Android在操作一些命令的时候需要进入到adb shell,然后才可以执行其他的命令,那么如何做到这一点呢?就要把adb shell按一个Process执行,然后再去操作这个Process的输入和输出流。
代码如下:
这段代码是操作 的
try {
Process process = ().exec("");
OutputStream outputStream = ();
final InputStream inputStream = ();
new Thread(new Runnable(){
byte[] cache = new byte[1024];
public void run() {
("listener started");
try {
while((cache)!=-1){
(new String(cache));
}
} catch (IOException e) {
//();
}
}
}).start();
(new byte[]{'d','i','r','\n'});
//inputStream.
int i = ();
("i=" + i);
} catch (Exception e) {
();
}
这段代码是操作Android adb shell 的
try {
Process process = ().exec("adb shell"); //adb shell
final BufferedWriter outputStream = new BufferedWriter(newOutputStreamWriter(()));
final BufferedReader inputStream = new BufferedReader(new InputStreamReader(()));
//这里一定要注意错误流的读取,不然很容易阻塞,得不到你想要的结果,
final BufferedReader errorReader = new BufferedReader(new InputStreamReader(()));
new Thread(new Runnable() {
String line;
public void run() {
("listener started");
try {
while((line=()) != null) {
(line);
}
} catch (IOException e) {
//();
}
}
}).start();
new Thread(new Runnable() {
final BufferedReader br = newBufferedReader(new InputStreamReader());
public void run() {
("writer started");
String line;
try {
while ((line =()) != null) {
(line + "\r\n");
();
}
} catch (IOException e) {
//();
}
}
}).start();
int i = ();
("i=" + i);
} catch (Exception e) {
();
}
}