今天写一个下程序,想通过java客户端执行adb命令,并捕获控制台返回的信息。
但是发现有的命令可以捕获返回的信息,有些不行,比方说adb devices
例子如下:
Process process=Runtime.getRuntime().exec("adb devices");
process.waitFor();
InputStreamReader isr=new InputStreamReader(process.getInputStream());

Scanner sc=new Scanner(isr);
while(sc.hasNext()){
   System.out.println(sc.next());
}//程序执行后,没有获得任何响应,也就是 sc.hasNext为false但是把命令改成 Process process=Runtime.getRuntime().exec("adb logcat");
确可以获得返回的信息请问各位高人能告诉我怎么解决吗?我是想用adb 命令获取当前连接到usb上的 设备列表。adb devices 控制台

解决方案 »

  1.   

    你好,我现在也碰到这个问题,我们用的是Timer,每隔5秒执行一次Runtime.getRuntime.exec("adb devices"),居然惊讶的发现,假如我只是插上我的手机。这个命令居然无法读出,返回的设备依旧是null。不过当我在当前Activity有所动作的时候,奇迹发现了,居然成功的检测出了手机。但是我不滑动当前的Activity就检测不出来。后来在网上查了一下,据说是因为虚拟机里面有可能没有实时的获取整个设备的信息,不过到目前为止,还没有发现解决办法,楼主有什么好的办法,记得贴出来哈!
      

  2.   

    你试着用命令行敲以下命令
    adb devices--- 是有设备列出的
    但是我们应用程序执行的话是默认在shell里
    你的程序等同于以下步骤
    1.adb shell进入shell
    2.adb devices
    我试了下,确实获取不到
      

  3.   

    http://www.oschina.net/question/260535_78166