0
public static boolean isNetworkAvailable(Context context) 
    {
        ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo ni = cm.getActiveNetworkInfo();


        if (ni == null) 
        {
            // There are no active networks.
            return false;
        }
        else if(ni.isAvailable() && cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == State.CONNECTED)
        {
            Log.i("NetworkState","Wifi Connected");
            return true;
        }
           else
          {
                    return false;
          }
}

true即使我连接到没有 Internet 连接的路由器,此方法也会返回。我应该怎么做才能决定我是否能够连接到互联网。

或者我应该先 Ping 到我的服务器或 google.com 以确定我是否有互联网?

4

1 回答 1

0

试试这个功能:

private final boolean isInternetOncheck() {
    ConnectivityManager connec = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
    if (!(connec.getActiveNetworkInfo() != null && connec.getActiveNetworkInfo().isAvailable() && connec.getActiveNetworkInfo().isConnected())) {
        Log.d(TAG+"Internet not aviable");
        ErrorDialog.dispDialog(MainList.this, getString(R.string.internet_is_not_available), getString(R.string.eliteerp));
        return false;
    } else {
        Log.d(TAG+"Internet available");
        return true;
    }
}

经许可

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
于 2013-06-10T07:46:27.080 回答