Android-Network工具类

/**
 * This class is used to handle device's network.
 * 
 * @author lijk
 */
public class NetworkUtils {
private static final int WIFI = ConnectivityManager.TYPE_WIFI;
private static final int _3G = ConnectivityManager.TYPE_MOBILE;


public static final byte AuthModeOpen = 0x00;
public static final byte AuthModeShared = 0x01;
public static final byte AuthModeAutoSwitch = 0x02;
public static final byte AuthModeWPA = 0x03;
public static final byte AuthModeWPAPSK = 0x04;
public static final byte AuthModeWPANone = 0x05;
public static final byte AuthModeWPA2 = 0x06;
public static final byte AuthModeWPA2PSK = 0x07;
public static final byte AuthModeWPA1WPA2 = 0x08;
public static final byte AuthModeWPA1PSKWPA2PSK = 0x09;


/**
* Method to check if network is available.

* @return true if either 3G or WiFi network is available, false otherwise.
*/
public static boolean isNetworkAvailable() {
boolean networkStatus = false;


try {
ConnectivityManager manager = (ConnectivityManager) CppApplication
.getAppContext().getSystemService(
Context.CONNECTIVITY_SERVICE);
boolean isMobileNetworkAvailable = false;
if (manager != null) {
NetworkInfo info = manager
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (info != null) {
isMobileNetworkAvailable = info.isConnectedOrConnecting();
}
}


WifiManager wifiManager = (WifiManager) CppApplication
.getAppContext().getSystemService(Context.WIFI_SERVICE);
boolean isWifiAvailable = false;
if (wifiManager != null) {
NetworkInfo info = manager
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
isWifiAvailable = wifiInfo.getSupplicantState() == SupplicantState.COMPLETED
&& info.isConnected();


}


return isMobileNetworkAvailable || isWifiAvailable;
} catch (Exception e) {
networkStatus = false;
}
return networkStatus;
}


/**
* Method to get the list of available WiFi Ssids.

* @return the {@link ArrayList} containing the WiFi Ssids of all previously
*         configured WiFi networks.
*/
public static ArrayList<String> getAvailableWifiSsids() {
ArrayList<String> ssids = new ArrayList<String>();
String currentWifiSsid = getCurrentlyConnectedWifiSsid();
if (!TextUtils.isEmpty(currentWifiSsid)) {
ssids.add(currentWifiSsid);
}
try {
WifiManager wifiManager = (WifiManager) CppApplication
.getAppContext().getSystemService(Context.WIFI_SERVICE);
List<ScanResult> scanResult = wifiManager.getScanResults();
VCLog.debug(Category.CAT_GENERAL,
"NetworkUtils: getAvailableWifiSsids: scanResult.size->"
+ scanResult.size());
for (ScanResult curScanResultObj : scanResult) {
try {
String wifiSsid = curScanResultObj.SSID;
if (TextUtils.isEmpty(wifiSsid)) {
continue;
}


if (wifiSsid.charAt(0) == '"') {
wifiSsid = wifiSsid.substring(1);
}


if (wifiSsid.charAt(wifiSsid.length() - 1) == '"') {
wifiSsid = wifiSsid.substring(0, wifiSsid.length() - 1);
}
if (!TextUtils.isEmpty(wifiSsid)
&& !ssids.contains(wifiSsid)) {
ssids.add(wifiSsid);
}
} catch (Exception e) {
VCLog.error(Category.CAT_GENERAL,
"NetworkUtils: getAvailableWifiSsids: Exception while removing \"->"
+ e.getMessage());
}
}
} catch (Exception e) {
VCLog.error(
Category.CAT_GENERAL,
"NetworkUtils: getAvailableWifiSsids: Exception->"
+ e.getMessage());
}
VCLog.debug(Category.CAT_GENERAL,
"NetworkUtils: getAvailableWifiSsids: size->" + ssids.size());
return ssids;
}


/**
* This method is used to get the currently connected Wifi SSID

* @return
*/
public static String getCurrentlyConnectedWifiSsid() {
String ssid = null;
try {
WifiManager wifiManager = (WifiManager) CppApplication
.getAppContext().getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
ssid = wifiInfo.getSSID().toString();
if (ssid.charAt(0) == '"') {
ssid = ssid.substring(1);
}


if (ssid.charAt(ssid.length() - 1) == '"') {
ssid = ssid.substring(0, ssid.length() - 1);
}
} catch (Exception e) {
e.printStackTrace();
}
return ssid;
}


/**
* Method to get authmode of select wifi sssid.

* @param wifi
*            ssid.
* @return authmode.
*/


public static byte getSelectWiFiAuthMode(String ssid) {
byte mAuthMode = AuthModeOpen;
WifiManager mWifiManager = null;


mWifiManager = (WifiManager) CppApplication.getAppContext()
.getSystemService(Context.WIFI_SERVICE);
if (mWifiManager != null && mWifiManager.isWifiEnabled()) {
List<ScanResult> ScanResultlist = mWifiManager.getScanResults();
if (ScanResultlist != null) {
for (int i = 0, len = ScanResultlist.size(); i < len; i++) {
ScanResult AccessPoint = ScanResultlist.get(i);
if (AccessPoint != null) {
if (AccessPoint.SSID.equals(ssid)) {
boolean WpaPsk = AccessPoint.capabilities
.contains("WPA-PSK");
boolean Wpa2Psk = AccessPoint.capabilities
.contains("WPA2-PSK");
boolean Wpa = AccessPoint.capabilities
.contains("WPA-EAP");
boolean Wpa2 = AccessPoint.capabilities
.contains("WPA2-EAP");


if (AccessPoint.capabilities.contains("WEP")) {
mAuthMode = AuthModeOpen;
break;
}


if (WpaPsk && Wpa2Psk) {
mAuthMode = AuthModeWPA1PSKWPA2PSK;
break;
} else if (Wpa2Psk) {
mAuthMode = AuthModeWPA2PSK;
break;
} else if (WpaPsk) {
mAuthMode = AuthModeWPAPSK;
break;
}


if (Wpa && Wpa2) {
mAuthMode = AuthModeWPA1WPA2;
break;
} else if (Wpa2) {
mAuthMode = AuthModeWPA2;
break;
} else if (Wpa) {
mAuthMode = AuthModeWPA;
break;
}


mAuthMode = AuthModeOpen;


}
}
}
}
}
return mAuthMode;
}


// 180.97.33.107 www.baidu.com
public static boolean pingIP(String address) {
Process p;
int status = -1;


try {


p = Runtime.getRuntime().exec("/system/bin/ping -c 1 " + address);


status = p.waitFor();


} catch (IOException e) {


e.printStackTrace();


return false;


} catch (InterruptedException e) {


e.printStackTrace();


return false;


}


if (status == 0) {


return true;


} else {


return false;


}
}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值