Android获取数据之网络状态判断

        在Android移动开发中,尤其是遇到网络视频播放功能,因为视频播放需要较多的流量数据,因此我们在请求网络视频之前,需要判断当前的网络状态是无线WIFI还是移动网络。如果是WIFI,直接可以播放,如果是移动网络,我们需要给用户一个友好的提示。

一.网络状态判断,涉及到一个很关键的类ConnectivityManager,这是一个系统服务的类

        ConnectivityManager  connMgr  =  (ConnectivityManager)  Context.getSystemService(Context.CONNECTIVITY_SERVICE);

二.通过ConnectivityManager的实例connMgr获取当前所有的网络。需要注意的是在API 21之前,通过connMgr只能获取到一个网络状态;API 21以上(包括21),通过connMgr获取到的网络状态数组

    1.小于API  21

         //无线WIFI网络

        NetworkInfo WifiNetWorkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

        boolean Wificonnected = WifiNetWorkInfo.isConnected();        //判断是否连接WiFi

        //移动网络

        NetworkInfo MobilenetworkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

        boolean Mobileconnected = MobilenetworkInfo.isConnected();        //判断是否连接移动网络

2.等于大于API  21

        Map netList =new HashMap<>();

        Network[] allNetworks = connMgr.getAllNetworks();

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

                NetworkInfo networkInfo = connMgr.getNetworkInfo(allNetworks[i]);

                String typeName = networkInfo.getTypeName();

                boolean connected = networkInfo.isConnected();

                netList.put(typeName,connected);

        }

        if (netList.containsKey("WIFI")){

                Boolean wifiIsConnet = netList.get("WIFI");

                if (wifiIsConnet){

                        Toast.makeText(MainActivity.this,"WIFI连接,放心使用",Toast.LENGTH_SHORT).show();

                }

        }else if (netList.containsKey("MOBILE")){

                Boolean mobileIsConnet = netList.get("MOBILE");

                if (mobileIsConnet){

                        Toast.makeText(MainActivity.this,"移动网络连接,小心使用",Toast.LENGTH_SHORT).show();

                }else{

                        Toast.makeText(MainActivity.this,"移动网络未连接,不能使用",Toast.LENGTH_SHORT).show();

                }

        }

你可能感兴趣的:(Android获取数据之网络状态判断)