本文目錄一覽:
- 1、如何同時配置ADB變數環境和Java環境
- 2、電腦上的java軟體怎麼通過adb查詢android sqlite資料庫
- 3、用Java調用adb,不出來是為什麼
- 4、java通過exec條用cmd執行adb無效
- 5、如何在Java代碼中調用adb命令
如何同時配置ADB變數環境和Java環境
兩個目錄之間用半形的分號隔開,比如說:
path=D:\android-sdk-windows\tools;D:\jdk\bin
電腦上的java軟體怎麼通過adb查詢android sqlite資料庫
不知道,好像支持的我執行「adb shell cd /data/data/com.test/databases/ ls」 可以執行顯示出databases下文件目錄的,如果只用的話 就只顯示根目錄下的文件了
用Java調用adb,不出來是為什麼
你需要在前面加上cmd /c
即exec中執行的命令應該是cmd /c adb shell input …
java通過exec條用cmd執行adb無效
“cmd.exe /c adb devices”
java的Runtime環境已經是命令行模式,類似已經打開cmd.exe 所以,
執行後續命令無需加上 cmd.exe,命令修改為:
Runtime.getRuntime().exec(“adb devices”)
如何在Java代碼中調用adb命令
代碼如下:
package com.symbio.ltp.adb;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
import com.symbio.ltp.model.ConfigPropertiesData;
import com.symbio.ltp.util.Log;
public class ShellCommand {
private String name;
private Process process;
private BufferedWriter writer;
private BufferedReader reader;
private BufferedReader errorReader;
private ListString list;
private String[] returnValue;
public ShellCommand(String name) {
this.name = name;
}
public String getName() {
return name;
}
public Process getProcess() {
return process;
}
public BufferedWriter getOutputWriter() {
return writer;
}
public BufferedReader getInputReader() {
return reader;
}
public BufferedReader getErrorReader() {
return errorReader;
}
public boolean start(String cmd) {
try {
process = Runtime.getRuntime().exec(cmd);
writer = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
} catch (IOException e) {
Log.debug(“Exception in shell(” + name + “) — ” + e.getMessage());
return false;
}
return true;
}
public boolean exec(String cmd) {
String line;
try {
writer.write(cmd + “\n”);
writer.flush();
while((line = reader.readLine()) != null) {
Log.debug(line);
if(line.equals(ConfigPropertiesData.ltp_success)) {
return true;
} else if(line.equals(ConfigPropertiesData.ltp_fail)) {
return false;
}
}
} catch (IOException e) {
Log.debug(“Exception in shell(” + name + “) — ” + e.getMessage());
return false;
}
return true;
}
public String [] execReturn(String cmd) {
String line;
list = new ArrayListString();
try {
writer.write(cmd + “\n”);
writer.flush();
line = reader.readLine();
while((line = reader.readLine()) != null) {
if(line.length()0 !(line.startsWith(“#”))){
Log.debug(line);
list.add(line);
if(line.equals(ConfigPropertiesData.ltp_success)) {
break;
} else if(line.equals(ConfigPropertiesData.ltp_fail)) {
break;
}
}
}
int size = list.size();
returnValue = new String[size];
for (int i = 0; i size; i++) {
returnValue[i] = list.get(i);
}
} catch (IOException e) {
Log.debug(“Exception in shell(” + name + “) — ” + e.getMessage());
return null;
}
return returnValue;
}
public void terminate() {
try {
writer.write(0x03);
writer.flush();
} catch (IOException e) {
Log.debug(“Exception in shell(” + name + “) — ” + e.getMessage());
}
}
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/241474.html