您的位置:首页 > 理论基础 > 计算机网络

network: Android 网络判断(wifi、3G与其他)

2015-03-04 17:39 465 查看
public class NetworkProber {

/**

* 网络是否可用

*

* @param activity

* @return

*/

public static boolean isNetworkAvailable(Context context) {

ConnectivityManager connectivity = (ConnectivityManager) context

.getSystemService(Context.CONNECTIVITY_SERVICE);

if (connectivity == null) {

} else {

NetworkInfo[] info = connectivity.getAllNetworkInfo();

if (info != null) {

for (int i = 0; i < info.length; i++) {

if (info[i].getState() == NetworkInfo.State.CONNECTED) {

return true;

}

}

}

}

return false;

}

/**

* Gps是否打开

*

* @param context

* @return

*/

public static boolean isGpsEnabled(Context context) {

LocationManager locationManager = ((LocationManager) context

.getSystemService(Context.LOCATION_SERVICE));

List<String> accessibleProviders = locationManager.getProviders(true);

return accessibleProviders != null && accessibleProviders.size() > 0;

}

/**

* wifi是否打开

*/

public static boolean isWifiEnabled(Context context) {

ConnectivityManager mgrConn = (ConnectivityManager) context

.getSystemService(Context.CONNECTIVITY_SERVICE);

TelephonyManager mgrTel = (TelephonyManager) context

.getSystemService(Context.TELEPHONY_SERVICE);

return ((mgrConn.getActiveNetworkInfo() != null && mgrConn

.getActiveNetworkInfo().getState() == NetworkInfo.State.CONNECTED) || mgrTel

.getNetworkType() == TelephonyManager.NETWORK_TYPE_UMTS);

}

/**

* 判断当前网络是否是wifi网络

* if(activeNetInfo.getType()==ConnectivityManager.TYPE_MOBILE) { //判断3G网

*

* @param context

* @return boolean

*/

public static boolean isWifi(Context context) {

ConnectivityManager connectivityManager = (ConnectivityManager) context

.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();

if (activeNetInfo != null

&& activeNetInfo.getType() == ConnectivityManager.TYPE_WIFI) {

return true;

}

return false;

}

/**

* 判断当前网络是否是3G网络

*

* @param context

* @return boolean

*/

public static boolean is3G(Context context) {

ConnectivityManager connectivityManager = (ConnectivityManager) context

.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();

if (activeNetInfo != null

&& activeNetInfo.getType() == ConnectivityManager.TYPE_MOBILE) {

return true;

}

return false;

}

}

另外还有两个方法判断网络是否可用:

public static boolean isNetworkAvailable_00(Context context) {

ConnectivityManager cm = ((ConnectivityManager) context

.getSystemService(Context.CONNECTIVITY_SERVICE));

if (cm != null) {

NetworkInfo info = cm.getActiveNetworkInfo();

if (info != null && info.isConnectedOrConnecting()) {

return true;

}

}

return false;

}

public static boolean isNetworkAvailable_01(Context context) {

ConnectivityManager cm = (ConnectivityManager) context

.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo network = cm.getActiveNetworkInfo();

if (network != null) {

return network.isAvailable();

}

return false;

}

更加严谨的写法:

public static boolean checkNet(Context context) {

try {

ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

if (connectivity != null) {

NetworkInfo info = connectivity.getActiveNetworkInfo();

if (info != null && info.isConnected()) {

if (info.getState() == NetworkInfo.State.CONNECTED) {

return true;

}

}

}

} catch (Exception e) {

return false;

}

return false;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: