java adb命令_从Java程序执行ADB命令

我正在使用的程序使用ADB(Android调试桥)将文件发送到手机:

for (String s : files)

String cmd = "adb -s 0123456789ABCDEF push " + s + " /mnt/sdcard/" + s;

try {

InputStream is = Runtime.getRuntime().exec(cmd).getInputStream();

while (is.read() != -1) {}

} catch (IOException e) {

e.printStackTrace();

}

我希望程序等待ADB完成传输,但是ADB作为守护程序运行,因此永远无法完成。但是该程序仍在继续运行,并且某种程度上文件没有发送到我的手机(日志中没有例外)。当我从控制台运行命令时,它可以正常工作。

我究竟做错了什么?如何正确通过ADB发送文件?

注意:这is.read() == -1将不起作用,因为ADB守护程序会将 所有输出

写入系统标准输出。我尝试将其转发到文本文件中。它保持为空,并且输出仍然写入终端

编辑 :读取ADB进程的ErrorStream返回每个adb push命令的adb帮助。再次: 确切的

命令(从Eclipse控制台复制)在终端中工作

编辑2 :使用ProcessBuilder而不是RUntime.getRuntime.exec()导致以下错误:

java.io.IOException: Cannot run program "adb -s 0123456789ABCDEF push "inputfile "outputfile""": error=2, File or directory not found

在ProcessBuilder的start()-method上使用ADB(/usr/bin/adb)的绝对路径时,也会发生同样的情况。inputfile和outputfile字符串也是绝对路径,就像/home/sebastian/testfile并且肯定存在。从终端运行命令时(打印字符串“

cmd”,复制并粘贴),evreything仍然可以正常工作。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值