如何在android中检查网络是不是连接到wifi [重复]

Posted

技术标签:

【中文标题】如何在android中检查网络是不是连接到wifi [重复]【英文标题】:how to check a network is connected to wifi in android [duplicate]如何在android中检查网络是否连接到wifi [重复] 【发布时间】:2013-04-06 10:23:29 【问题描述】:

现在我正在开发一个应用程序。我使用 ConnectivManager 检查了 android 中的互联网连接。我检查了 Mobile 3g 和 WIFI。我关闭了 WIFI 连接并检查了它是否可以正常工作。然后我打开WIFI连接,但断开了WIFI中的所有网络。现在我检查但它显示WIFI已连接但我想检查WIFI打开时网络是否连接到WIFI或WIFI打开时未连接到WIFI。我不知道如何编码。任何人都可以帮助提供所需的代码吗?

提前致谢

【问题讨论】:

您的问题似乎已经得到解答-***.com/questions/3841317/… 这是我在另一篇文章中的回答:***.com/a/8548926/220710 【参考方案1】:
public boolean isWifiEnabled()
       ConnectivityManager cm = (ConnectivityManager) c.getSystemService(
                            Context.CONNECTIVITY_SERVICE);
       NetworkInfo wifiNetwork = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

       if (wifiNetwork != null && wifiNetwork.isConnected()) 
          return true;
       
    return false;

别忘了使用以下权限

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

【讨论】:

其实这个是用来检查WIFI是否连接的,但是我想要的是检查是否有WIFI网络连接到WIFI 没有。我检查了WIFI是否已连接。我打开了 WIFI 连接。但我禁用了所有 wifi 网络。现在我想检查WIFI是否连接?如果已连接,则必须检查是否连接了任何 WIFI 网络? 先用我的方法检查wifi是否连接。然后检查网络连接。如果网络不可用,则 wifi 网络未启用..(或者我可能误解了您的查询) 实际上我拥有三个已配置的 WIFI 网络。我打开了 WIFI 连接,但禁用了所有这三个网络。现在我需要编写代码来显示“未连接网络的 WIFI 连接”【参考方案2】:

检查互联网是否通过 WiFi 或手机连接

public static boolean hasInternet(Activity a) 
 boolean hasConnectedWifi = false;
 boolean hasConnectedMobile = false;

 ConnectivityManager cm = (ConnectivityManager) a.getSystemService(Context.CONNECTIVITY_SERVICE);
 NetworkInfo[] netInfo = cm.getAllNetworkInfo();
 for (NetworkInfo ni : netInfo) 
  if (ni.getTypeName().equalsIgnoreCase("wifi"))
   if (ni.isConnected())
    hasConnectedWifi = true;
  if (ni.getTypeName().equalsIgnoreCase("mobile"))
   if (ni.isConnected())
    hasConnectedMobile = true;
 
 return hasConnectedWifi || hasConnectedMobile;

【讨论】:

【参考方案3】:

通过这段代码,您应该能够使用 ConnectivityManager。从那里您可以检查它是否已连接甚至可用。

        ConnectivityManager connManager = (ConnectivityManager)   getSystemService(CONNECTIVITY_SERVICE);
        NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

        if (mWifi.isConnected()) 
            // Do whatever
        

【讨论】:

【参考方案4】:

检查网络连接

public class CheckNetwork 


private static final String TAG = CheckNetwork.class.getSimpleName();



public static boolean isInternetAvailable(Context context)

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

    if (info == null)
    
         Log.d(TAG,"no internet connection");
         return false;
    
    else
    
        if(info.isConnected())
        
            Log.d(TAG," internet connection available...");
            return true;
        
        else
        
            Log.d(TAG," internet connection");
            return true;
        

    

 

在你的活动中

      if(Checknetwork.isInternetAvailable(MainActivity.this)
      
          // do something
      

记得在清单文件中添加权限

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

这还会检查您是否连接到移动网络或 wifi。

【讨论】:

以上是关于如何在android中检查网络是不是连接到wifi [重复]的主要内容,如果未能解决你的问题,请参考以下文章

强制 Android 应用连接到某个 WiFi 网络

设备在Android中连接到WiFi时如何获取蜂窝网络的IP地址

在 android 上使用 pyjnius 连接到 wifi 网络

Swift:检查iOS是不是在没有互联网的情况下连接到wifi

如何检测系统是不是连接到 ad hoc 或基础设施 wifi?

如何在 Android 中使用 Intent 连接到已知 WiFi?