如果启用了WiFi,我正尝试将布尔值设置为true。我通过广播接收器的实现获取连接状态。但是,布尔值不止一次被设置为true。你能帮助我解决这个问题吗?我希望布尔值仅在连接WiFi时设置为true,并且仅在WiFi断开时设置为false。代码如下:
NetworkInfo info = (NetworkInfo) ((ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE))
.getActiveNetworkInfo();
if (info != null) {
Log.d("wifiRun", "Network available");
ConnectivityManager conMan = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo.State wifi = null;
if (conMan.getNetworkInfo(1).isAvailable())
wifi = conMan.getNetworkInfo(1).getState();
if (wifi == NetworkInfo.State.CONNECTED) {
//|| wifi == NetworkInfo.State.CONNECTING) {
wifiState = true;
Log.d("wifiRun", "wifiState: " + wifiState);
} else {
wifiState = false;
Log.d("wifiRun", "wifiState: " + wifiState);
}
}
清单:
<receiver android:name="com.aws.BatteryUsage.ServiceDefinition">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
答案 0 :(得分:3)
看看这个方法。 Thiw将返回设备所连接的网络名称。如果设备未连接,则返回“无”。根据您的需要,可以很容易地将String名称更改为boolean isConnected。它对我有用。
public String getWifiName(Context context) {
String ssid = "none";
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
if (WifiInfo.getDetailedStateOf(wifiInfo.getSupplicantState()) == NetworkInfo.DetailedState.CONNECTED) {
ssid = wifiInfo.getSSID();
}
return ssid;
}
这需要AndroidManifest.xml中的权限:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
它适合你。但是,如果您需要有关此方法的更多详细信息,请read it here
此外,您可以尝试浏览以下内容:
NetworkInfo.DetailedState
他们描绘了许多你可能觉得有用的州。
答案 1 :(得分:0)
WifiManager wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE);
if (wifi.isWifiEnabled()){
//wifi is enabled
return true;
}else{
return false;
}
参考http://developer.android.com/reference/android/net/wifi/WifiManager.html