Android InetAddress.getByName(ip).isReachable(timeout)始终返回false

Stu*_*ler 5 networking android

我看到了24个类似的问题,询问InetAddress.isReachable(),但是当网络可以访问时,我的实例永远不会返回true,只有一个例外的测试127.0.0.1.

if (InetAddress.getByName("google.com").isReachable(2000))
{
    System.out.println("visible");
}
else
{
    System.out.println("not visible");
}
Run Code Online (Sandbox Code Playgroud)

并具有权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
Run Code Online (Sandbox Code Playgroud)

此代码在一个线程中启动(当然).我的应用程序需要知道是否可以访问特定的IP(不是谷歌,如上例所示).这在模拟器中的行为相同.

有没有更好的方法来测试网络连接?