0

在一个 android studio 项目中,我想检查活动的互联网,为此我使用这个类。它的工作但是。问题是它仅在连接不可用时才起作用。但我只想在连接处于活动状态且可行时返回 true。因为该应用程序与 webview 一起使用,并且如果连接是一周的或不活动的,那么它会显示无法访问的错误。它最常发生在 WiFi 上。请帮忙

public boolean isConnected(Context context) {

  ConnectivityManager cm = (ConnectivityManager) 
  context.getSystemService(Context.CONNECTIVITY_SERVICE);
  NetworkInfo netinfo = cm.getActiveNetworkInfo();

  if (netinfo != null && netinfo.isConnectedOrConnecting()) {
  android.net.NetworkInfo wifi = 
  cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
  android.net.NetworkInfo mobile = 
  cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

  if((mobile != null && mobile.isConnectedOrConnecting()) || (wifi != null && 
  wifi.isConnectedOrConnecting()))
  {
    return true;
  }
  else {
    return false;
  }
  } else{
   return false;
  }
}
4

1 回答 1

-1

这是我在工作代码中使用的:

public static boolean isOnline(){    
        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" />

并且,如果您需要在应用程序中使用互联网,请考虑添加以下内容:

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

您也可以参考此链接获取有关网络权限的官方文档,希望对您有所帮助

于 2017-09-07T10:11:00.133 回答