【发布时间】: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?
【问题讨论】:
我阅读了这个解决方案:How to check network connection enable or disable in WIFI and 3G(data plan) in mobile? .BUT,它只是检查 wifi 网络是否连接。如何检查wifi是否连接到特定的SSID?
【问题讨论】:
代码类似,再次使用系统服务,确保您已连接到某物并获取 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();
}
【讨论】:
ConnectivityManager 和NetworkInfo。可能是什么原因?
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;
}
【讨论】:
最适合我的:
菜单:
<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"/>
【讨论】:
android.net.wifi.STATE_CHANGE 会触发吗?