1

我正在开发一个应用程序。场景是:我的 Android 设备显示连接到互联网,但该设备无法访问互联网。在我的应用程序中,我使用此代码检查互联网连接:

private boolean isNetworkAvailable() {
    ConnectivityManager connectivityManager 
          = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}


<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

但是每次它在我上面解释的场景中崩溃。任何帮助,将不胜感激。

谢谢

4

4 回答 4

4

我写了这个方法来处理这个

public boolean isOnline(Context con) {
        try {
            connectivityManager = (ConnectivityManager) con
                        .getSystemService(Context.CONNECTIVITY_SERVICE);

        NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
        connected = networkInfo != null && networkInfo.isAvailable() &&
                networkInfo.isConnected();
        return connected;


        } catch (Exception e) {
            System.out.println("CheckConnectivity Exception: " + e.getMessage());
            Log.v("connectivity", e.toString());
        }
        return connected;
    }

并将这些权限添加到清单文件

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
于 2013-04-16T06:24:20.017 回答
0

用这个

公共静态布尔isInternetOn(上下文上下文){

    ConnectivityManager cm = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    // test for connection
    if (cm.getActiveNetworkInfo() != null
            && cm.getActiveNetworkInfo().isAvailable()
            && cm.getActiveNetworkInfo().isConnected()) {
        Log.v(TAG, "Internet is working");
        // txt_status.setText("Internet is working");
        return true;
    } else {
        // txt_status.setText("Internet Connection Not Present");
        Log.v(TAG, "Internet Connection Not Present");
        return false;
    }
}
于 2013-04-16T06:26:55.290 回答
0

检查这个:

private boolean isNetworkAvailable()
{
  ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
  State mobile = conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
  State wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();

  if (wifi == NetworkInfo.State.CONNECTED || wifi == NetworkInfo.State.CONNECTING)
  {             
      // Wifi connected     
  }
  else if(mobile == NetworkInfo.State.CONNECTED || mobile == NetworkInfo.State.CONNECTING)
  {
      // Mobile network connected
  }
}
于 2013-04-16T06:28:08.913 回答
0

试试这个代码

public boolean isConnected(){
        ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
          if (connectivity != null)
          {
              NetworkInfo[] info = connectivity.getAllNetworkInfo();
              if (info != null)
                  for (int i = 0; i < info.length; i++)
                      if (info[i].getState() == NetworkInfo.State.CONNECTED)
                      {
                          return true;
                      }

          }
          return false;
    }
于 2013-04-16T06:22:12.520 回答