【问题标题】:How to check whether the wifi is connected to specific SSID如何检查wifi是否连接到特定的SSID
【发布时间】:2011-09-27 05:52:47
【问题描述】:

我阅读了这个解决方案:How to check network connection enable or disable in WIFI and 3G(data plan) in mobile? .BUT,它只是检查 wifi 网络是否连接。如何检查wifi是否连接到特定的SSID?

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    代码类似,再次使用系统服务,确保您已连接到某物并获取 SSID:

    WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    WifiInfo wifiInfo = wifiManager.getConnectionInfo();
    if (WifiInfo.getDetailedStateOf(wifiInfo.getSupplicantState()) == NetworkInfo.DetailedState.CONNECTED) {
        String ssid = wifiInfo.getSSID();
    }
    

    【讨论】:

    • 如果我的无线网络 SSID 是 Linksys,我去我朋友的家,他的 SSID 也设置为 Linksys,我可以连接到任何一个(我都有密码),这个测试将对这两个地方都适用,对吗?有没有办法确定它是我的 Linksys 网络?也许使用 MAC 地址?
    • 由于某种原因,它不起作用。我必须使用ConnectivityManagerNetworkInfo。可能是什么原因?
    【解决方案2】:
    public static boolean IsWiFiConnected(Context context) {
        ConnectivityManager connectivity = (ConnectivityManager) context
            .getApplicationContext().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].getTypeName().equals("WIFI")
                  && info[i].isConnected())
                return true;
            }
          }
        }
    
        return false;
      }
    

    【讨论】:

    • 这没有回答 OP 关于特定 SSID 的问题。
    【解决方案3】:

    最适合我的:

    菜单:

    <receiver android:name="com.AEDesign.communication.WifiReceiver" >
            <intent-filter android:priority="100">
                <action android:name="android.net.wifi.STATE_CHANGE" />
            </intent-filter>
        </receiver>
    

    类:

     public class WifiReceiver extends BroadcastReceiver{
    
            @Override
            public void onReceive(Context context, Intent intent) {
    
                NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
                if(info!=null){
    
                    if(info.isConnected()){
                                        //Do your work. 
    
                                        //To check the Network Name or other info:
                            WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
                        WifiInfo wifiInfo = wifiManager.getConnectionInfo();
                            String ssid = wifiInfo.getSSID();
    
                    }
                }
    

    权限:

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

    【讨论】:

    • 对不起。当设备从一个 SSID 切换到另一个 SSID 时,android.net.wifi.STATE_CHANGE 会触发吗?
    • 这应该会触发。 Cz 状态更改为“断开连接”,然后返回“连接”。不过我还没查过
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多