2011-09-27 70 views

回答

7

的代码是相似的,再次使用的系统服务,请确保您连接到的东西,并获得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

由于某种原因,它不起作用。我必须使用'ConnectivityManager'和'NetworkInfo'。可能是什么原因? – 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

这并不回答OP关于特定SSID的问题。 – Steve

1

为我工作的最好的:

Menifest:

<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"/> 
+0

不好意思。当设备从一个SSID切换到另一个SSID时,是否触发'android.net.wifi.STATE_CHANGE'? – Yeung

+0

这应该会触发。 Cz状态变为“断开”,然后回到“连接”。我还没有检查过它 – usman

相关问题