在一些程序中,需要從網上下載數據,或者通過其他方式對網絡產生流量,當wifi不可用時應該提示用戶wifi已經不可用了,是否繼續,因為如果wifi掉了,那么程序可能采用3G卡或其他的收費的渠道使用網絡,會導在不知情時產生大量的上網費用。通過查看android的api可使用下列方法進行判斷:
- public static boolean isWiFiActive(Context inContext) {
- Context context = inContext.getApplicationContext();
- WifiManager wifiManager = (WifiManager) context
- .getSystemService(Context.WIFI_SERVICE);
- return wifiManager.isWifiEnabled();
- }
public static boolean isWiFiActive(Context inContext) {
Context context = inContext.getApplicationContext();
WifiManager wifiManager = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);
return wifiManager.isWifiEnabled();
}
在模擬器上使用這個方法時,可以正確判斷wifi是否可用,但是在真機上就判斷不出來。wifi是斷開的,但是返回的結果true,造成wifi判斷不准確。經過嘗試可使用如下的方法判斷方能正確:
- public static boolean isWiFiActive(Context inContext) {
- Context context = inContext.getApplicationContext();
- ConnectivityManager connectivity = (ConnectivityManager) context
- .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;
- }
public static boolean isWiFiActive(Context inContext) {
Context context = inContext.getApplicationContext();
ConnectivityManager connectivity = (ConnectivityManager) context
.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;
}
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
在android中,如何判斷網絡是否連接或WIFI已連接呢,很簡單,可以用如下的方法判斷
- public static boolean checkNetworkConnection(Context context)
- {
- final ConnectivityManager connMgr = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
-
- final android.net.NetworkInfo wifi =connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
- final android.net.NetworkInfo mobile =connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
-
- if(wifi.isAvailable()||mobile.isAvailable())
- return true;
- else
- return false;
- }