Java 使用进程构建器执行 Adb 命令时出错
Java getting error while executing Adb Commands using process builder
执行以下行时出现响应错误=>分段错误
String[] commands = {"cmd.exe","/c","adb shell","su","cd /data/app","ls com.mypack*"};
StringBuilder cmdReturnRsp = new StringBuilder();
try {
ProcessBuilder processBuilder = new ProcessBuilder(commands);
processBuilder.directory(fileADb);
Process process = processBuilder.start();
InputStream inputStream = process.getInputStream();
int c;
while ((c = inputStream.read()) != -1) {
cmdReturnRsp.append((char) c);
}
System.out.println("responce = "+ cmdReturnRsp);
}catch(Exception e){
}
但是当在 cmd 提示符上方 运行 行时它工作正常,那么如何使代码与 cmd
一样工作
/c 我猜是不理解的。
应该是 cd c:/
您对进程生成器的理解有误。我似乎认为它是一种脚本。这是错误的。 Process builder 只是构建正确的命令行并执行它。
因此,您可以 运行 cmd.exe
,您可以 运行 cmd.exe /c adb shell
,但我怀疑您是否可以 运行 其余命令。
查看 adb
的描述。如果它支持类似于 cmd /c
的模式,即在命令行中获取命令然后执行它,你可能可以这样做。
顺便说一句,你为什么要这样做?
检查设备是否已root,通常当设备未root时,它不起作用。
执行以下行时出现响应错误=>分段错误
String[] commands = {"cmd.exe","/c","adb shell","su","cd /data/app","ls com.mypack*"};
StringBuilder cmdReturnRsp = new StringBuilder();
try {
ProcessBuilder processBuilder = new ProcessBuilder(commands);
processBuilder.directory(fileADb);
Process process = processBuilder.start();
InputStream inputStream = process.getInputStream();
int c;
while ((c = inputStream.read()) != -1) {
cmdReturnRsp.append((char) c);
}
System.out.println("responce = "+ cmdReturnRsp);
}catch(Exception e){
}
但是当在 cmd 提示符上方 运行 行时它工作正常,那么如何使代码与 cmd
一样工作/c 我猜是不理解的。 应该是 cd c:/
您对进程生成器的理解有误。我似乎认为它是一种脚本。这是错误的。 Process builder 只是构建正确的命令行并执行它。
因此,您可以 运行 cmd.exe
,您可以 运行 cmd.exe /c adb shell
,但我怀疑您是否可以 运行 其余命令。
查看 adb
的描述。如果它支持类似于 cmd /c
的模式,即在命令行中获取命令然后执行它,你可能可以这样做。
顺便说一句,你为什么要这样做?
检查设备是否已root,通常当设备未root时,它不起作用。