获取手机网络数据连接状态(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

posted @ 2016-08-19 12:00  ts-android  阅读(1604)  评论(0)    收藏  举报