无法 ping 一个网站,即使我已连接至网络。

3

我正在尝试在我的安卓应用中ping一个网站以检测我是否有互联网连接。在许多设备上,这个功能都很好用,但今天,在新设备上,它总是返回我没有互联网连接。

这是代码:

    static public  boolean isInternetAvailable(String url){
    Runtime runtime = Runtime.getRuntime();
    try {
        String command = "/system/bin/ping -c 1 " + url;
        Process ipProcess = runtime.exec(command);
        int     exitValue = ipProcess.waitFor();
        return (exitValue == 0);

    } catch (IOException e)          { e.printStackTrace(); }
    catch (InterruptedException e) { e.printStackTrace(); }

    return false;
}

尽管服务器在线并且我可以从其他各种设备ping通它,在新设备上它始终返回false。是否可能是ping命令被某些原因阻止了?新设备是Android版本4.3的三星GT-19305。


2
你能做一些需要网络连接的其他事情吗?请注意,在Android中,您需要使用与View正在工作的不同线程。 - Mihai
是的,设备有互联网,我们可以使用浏览器搜索网络并做任何想做的事情。 - Tristus
只能确认在我的其中一台设备上ping命令也无法工作。 - greenapps
我发现这里的答案很有帮助。 - juunas
那里有什么有用的东西吗?对于这里的ping问题,那里没有解决方案。 - greenapps
好的,我们发现 exitvalue 返回 2,意味着服务器收到了 ping 但没有响应。 - Tristus
1个回答

0
你可以尝试这个:
Process process = new ProcessBuilder()
       .command("/system/bin/ping", "android.com")
       .redirectErrorStream(true)
       .start();
   try {
     InputStream in = process.getInputStream();
     OutputStream out = process.getOutputStream();

     readStream(in);

    finally {
     process.destroy();
   }
 }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接