Java进程exec不适用于adb push

时间:2013-09-22 17:23:08

标签: java android shell

使用时

    Process p=Runtime.getRuntime().exec(PATH+"adb push /home/user/test.txt /storage/sdcard0/Documents");
    p.waitFor();

手机上没有任何东西被推,没有出现任何错误。无论发送多大文件,命令都会立即完成。有趣的是,使用“adb shell ls”,“adb devices”,“adb connect”等不同命令的相同代码执行没有问题。在终端中触发时,push命令也能正常工作。

读取输出
    BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream()));

仅获取null。 PATH变量设置为sdk的platform-tools目录。

我错过了什么吗?

2 个答案:

答案 0 :(得分:0)

如果PATH的值是有效路径而不是/bin:/usr/bin:/usr/local/bin,那么您可能只是错过了添加另一个斜杠来将目录与命令分开:

Process p=Runtime.getRuntime().exec(PATH+"/adb push /home/user/test.txt /storage/sdcard0/Documents");

你也可以尝试使用绝对路径来验证路径确实不是它的问题:

Process p=Runtime.getRuntime().exec("/path/to/adb push /home/user/test.txt /storage/sdcard0/Documents");

答案 1 :(得分:0)

看起来“adb help”将其输出发送给stderr。 所以你需要查看进程的errorStream以及它的inputStream。

我猜你的情况是,“adb push”遇到错误,所以输出再次转向stderr。