获取手机网络数据连接状态(wifi还是手机连接)
http://blog.csdn.net/ztp800201/article/details/44198031
/* 一、判断网络是否是wifi,在判断之前一定要进行的非空判断,如果没有任何网络 连接info ==null info.getType() == ConnectivityManager.TYPE_WIFI 二、判断是否是手机网络 info !=null && info.getType() == ConnectivityManager.TYPE_MOBILE 手机网络进行详细区分: info.getSubtype() 这里使用 getSubtype(),不是 getType(),getType()返回的 是0,或者1,是区分是手机网络还是wifi info.getSubtype()取值列表如下: * NETWORK_TYPE_CDMA 网络类型为CDMA * NETWORK_TYPE_EDGE 网络类型为EDGE * NETWORK_TYPE_EVDO_0 网络类型为EVDO0 * NETWORK_TYPE_EVDO_A 网络类型为EVDOA * NETWORK_TYPE_GPRS 网络类型为GPRS * NETWORK_TYPE_HSDPA 网络类型为HSDPA * NETWORK_TYPE_HSPA 网络类型为HSPA * NETWORK_TYPE_HSUPA 网络类型为HSUPA * NETWORK_TYPE_UMTS 网络类型为UMTS */ //权限:<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> //获取网络连接管理者 ConnectivityManager manager =(ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); //获取数据连接信息 NetworkInfo networkInfo = manager.getActiveNetworkInfo(); if(networkInfo!=null){ //判断是否连接数据(wifi或者移动数据),true代表连接 boolean connected = networkInfo.isConnected(); networkInfo.getDetailedState();//获取详细状态。 networkInfo.getExtraInfo();//获取附加信息。 networkInfo.getReason();//获取连接失败的原因。 networkInfo.getType();//获取网络类型(一般为移动或Wi-Fi)。 networkInfo.getTypeName();//获取网络类型名称(一般取值“WIFI”或“MOBILE”)。ConnectivityManager.TYPE_WIFI networkInfo.isAvailable();//判断该网络是否可用。 networkInfo.isConnected();//判断是否已经连接。 networkInfo.isConnectedOrConnecting();//判断是否已经连接或正在连接。 networkInfo.isFailover();//判断是否连接失败。 networkInfo.isRoaming();//判断是否漫游 }else{ System.out.println("为空");//没有连接网络和数据(wifi和移动数据都没有连接) }
例子:
/** * 检查用户的网络:是否有网络,所需权限:<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> */ public boolean checkNet(Context context) { // 判断:WIFI链接 boolean isWIFI = isWIFIConnection(context); // 判断:Mobile链接 boolean isMOBILE = isMOBILEConnection(context); if (!isWIFI && !isMOBILE) { return false;//既不是手机连接,也不是wifi连接 } return true; }/** * 判断:是否是手机链接 * @param context * @return */ private boolean isMOBILEConnection(Context context) { ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); //获取连接的信息 NetworkInfo networkInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); if (networkInfo != null) { return networkInfo.isConnected(); } return false; } /** * 判断:WIFI链接 * * @param context * @return */ private static boolean isWIFIConnection(Context context) { ConnectivityManager manager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = manager .getNetworkInfo(ConnectivityManager.TYPE_WIFI); if (networkInfo != null) { return networkInfo.isConnected(); } return false; }
更详细的:http://blog.csdn.net/gdutxiaoxu/article/details/53008266