从java(Android)运行外部命令并读取连续输出

时间:2011-08-26 21:01:06

标签: android user-interface android-ndk native bufferedreader

我想运行诸如ping(或任何其他提供连续输出的)之类的excutable,并读取其输出并将其打印在我的GUI中。

我使用以下方法来运行我的命令:

command=Runtime.getRuntime().exec("ping www.google.com");

我正在阅读输出如下:

BufferedReader in = new BufferedReader(new InputStreamReader(command.getInputStream()));

while ((line = in.readLine()) != null) {  
                    System.out.println(line+"\n");
}

这很好用,虽然显示输出相当于使用adb -d shell执行./excutable所花费的时间。

因为我想在gui中输出(line)所以我创建一个TextView并将输出(行)附加到其中:

txtview=(TextView)findViewById(R.id.textview);
while ((line = in.readLine()) != null) {  
                    txtview.append(line+"\n");
                    System.out.println(line+"\n");
}

但这会导致我的申请崩溃。 请告诉我如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

如果您的最后一段代码正在Activity中执行,那么您可能会阻止UI线程太长时间。这将导致Android强制关闭您的应用程序。尝试使用AsyncTask获取输出并更新GUI。