Android 是设备连接到互联网的方法

Android is device connected to the internet method

我想创建一个方法来判断设备是否在线。据我了解,ConnectivityManager 仅告知设备是否已连接到网络。这并不意味着设备已连接到互联网。为了确保设备在线,我正在使用 InetAddress.getByName("google.com").isReachable(3); 但我不能在主线程上使用它。我可以创建一个单独的线程来检查连接,然后使用回调函数,但还有另一种方法吗?我不希望我的应用程序在连接之前执行任何操作。你有什么解决办法?谢谢!

试试这个:

public static boolean isOnline(Context context) {

    ConnectivityManager cm =
            (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo netInfo = cm.getActiveNetworkInfo();

    if (netInfo != null && netInfo.isConnected()) {
        return true;
    }

    return false;
}

对于任何网络,都无法保证在不实际发送数据的情况下检查您是否已连接到端点。即使设备连接到网络,有 IP 地址,最近收到数据,e.t.c,也不意味着你仍然有连接。

我建议让用户尽可能多地进入您的应用程序,在建立连接的同时在后台将对您服务器的请求排队。如果在用户使用应用程序时连接丢失,请使用相同的框架重新发送数据。使与服务器的连接尽可能对用户透明,除非在 ~1 分钟后无法连接