2

我正在制作一个可以从 android 应用程序获取 ping 响应时间的 android 应用程序。我已经在 windows 环境下完成了,但是当我把它带到 android 设备上时,设备无法发送任何响应。我怎么解决这个问题。?

提前致谢。这是我的代码

                 String ip="www.google.com"; String pingResult="  ";
                String pingCmd="ping"+ip;

                Runtime r=Runtime.getRuntime();
                Process p=r.exec(pingCmd);
                BufferedReader in=new BufferedReader(new InputStreamReader(p.getInputStream()));
                String inputLine;
                Toast.makeText(getApplicationContext(), "Going loop", 1).show();
                while((inputLine=in.readLine())!=null)
                {
                    pingResult=inputLine;
                }
                Toast.makeText(getApplicationContext(),pingResult, 1).show();
                in.close();
4

1 回答 1

1

如果您更改线路,您将正常工作:

Process p=r.exec(pingCmd); 

至:

Process p=r.exec(new String[] {"ping", "-c 4", "www.google.pt"}); 

原因是:

-Android exec 命令需要一个 String[] 而不是 String。

- 需要 -c 参数来将 ping 次数限制为 4(以复制 Windows 行为)。否则它将永远ping通。

最后,这只适用于真实设备。要让它在模拟器中工作,您需要配置 adb 以将 ping 重播重定向到模拟器。

祝你好运。

于 2012-09-30T16:30:49.720 回答