如何检查WiFi是否连接到特定的SSID

3
3个回答

9
代码相似,再次使用系统服务,确保您已连接到某个网络并获取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();
}

1
如果我的无线网络SSID是Linksys,我去我朋友家,他的SSID也设置为Linksys,我可以连接到任何一个(我有两个密码),这个测试对两个地方都是正确的,对吗?有没有办法确保它是我的Linksys网络?也许使用MAC地址? - MrGibbage
1
由于某些原因,它无法正常工作。我必须使用ConnectivityManagerNetworkInfo。可能是什么原因? - chip

1
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;
  }

1
这并没有回答原帖中关于特定SSID的问题。 - Steve

1

对我最有效的方法:

Manifest文件:

<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是否会触发? - Yeung
这应该会触发。Cz状态更改为“断开连接”,然后再次更改为“已连接”。不过我还没有检查过。 - M. Usman Khan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接