ADB介面的作用主要是讓電腦等其它設備控制安卓系統的,所以,稱為「中間橋」;
不是為安卓自已用的,自已可直接執行稱為SHELL,這與ADB無關。
所以安卓java不一定有封裝的ADB類。電腦上有ADB服務程序,埠5037,
它是中間程序,與安卓系統上守護進程(Daemon)通訊。
如果要在自已的手機上應該也能執行adb命令,應該直接跟守護進程
(Daemon)通訊了。網路上可以搜到的方法並不滿意。
樓主用exec執行CMD命令,這已不是ADB介面了,這是系統的SHELL了!!!
自已用socket/tcp直接發命令效果不知怎樣,地址用127.0.0.1, 安卓daemon進程的埠
5555 是奇數開始。
❷ 如何在android程序中執行adb shell命令
android中執行shell命令有兩種方式:
1.直接在代碼中用java提供的Runtime 這個類來執行命令,以下為完整示例代碼。
public void execCommand(String command) throws IOException {
// start the ls command running
//String[] args = new String[]{"sh", "-c", command};
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec(command); //這句話就是shell與高級語言間的調用
//如果有參數的話可以用另外一個被重載的exec方法
//實際上這樣執行時啟動了一個子進程,它沒有父進程的控制台
//也就看不到輸出,所以需要用輸出流來得到shell執行後的輸出
InputStream inputstream = proc.getInputStream();
InputStreamReader inputstreamreader = new InputStreamReader(inputstream);
BufferedReader bufferedreader = new BufferedReader(inputstreamreader);
// read the ls output
String line = "";
StringBuilder sb = new StringBuilder(line);
while ((line = bufferedreader.readLine()) != null) {
//System.out.println(line);
sb.append(line);
sb.append(' ');
}
//tv.setText(sb.toString());
//使用exec執行不會等執行成功以後才返回,它會立即返回
//所以在某些情況下是很要命的(比如復制文件的時候)
//使用wairFor()可以等待命令執行完成以後才返回
try {
if (proc.waitFor() != 0) {
System.err.println("exit value = " + proc.exitValue());
}
}
catch (InterruptedException e) {
System.err.println(e);
}
}
}
2.直接安裝shell模擬器,即已經開發好的android應用,啟動後類似windows的dos命令行,可以直接安裝使用,可執行常用的linux命令,應用在附件。