【问题标题】:Check WiFi and mobile data is active or not检查 WiFi 和移动数据是否处于活动状态
【发布时间】:2017-09-07 10:02:48
【问题描述】:

在一个 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;
  }
}

【问题讨论】:

  • isConnectedOrConnecting() 就够了,你还要检查什么连接类型?

标签: android wifi mobile-data


【解决方案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" />

您也可以参考to this link获取有关网络权限的官方文档 希望这会有所帮助

【讨论】:

  • 我只想返回真或假
  • @Swister 在您的清单中添加我提到的第一个权限并调用我上面发布的方法,如果您在线,则为 true,如果您不在线,则为 false
  • 你的答案是错误的。你测试过wifi和3g都开启的情况吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-11
  • 2019-12-10
  • 2013-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多