NetUtil.java 3.95 KB
package com.prws.common.utils;

import android.content.Context;
import android.net.wifi.WifiManager;
import android.util.Log;

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Collections;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;

public class NetUtil {

    private NetUtil(){}

    public static boolean isEthConnect(){
        return hasDisplay("eth");
    }

    public static boolean isWifiConnect(){
        return hasDisplay("wlan");
    }

    public static boolean is4GConnect(){
        return hasDisplay("usb");
    }

    private static boolean hasDisplay(String displayName){
        try {
            List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
            for (NetworkInterface intf : interfaces) {
                String displayNameStr = intf.getDisplayName();
                if(displayNameStr.contains(displayName)){
                    List<InetAddress> addrs = Collections.list(intf.getInetAddresses());
                    for (InetAddress addr : addrs) {
                        if (!addr.isLoopbackAddress()) {
                            String sAddr = addr.getHostAddress();
                            boolean isIPv4 = sAddr.indexOf(':')<0;
                            if(isIPv4){
                                return true; //检查到设备并且有设备ipv4的地址信息
                            }
                        }
                    }
                }else{
                    continue;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }

    public static boolean isWifiDisabled(Context context){
        try{
            WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
            return wifiManager.getWifiState()==WifiManager.WIFI_STATE_DISABLED;
        }catch (Exception e){
            e.printStackTrace();
        }
        return false;
    }

    public static void closeWifi(Context context,WifiChangeCallback callback){
        try{
            WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
            if(wifiManager.getWifiState()== WifiManager.WIFI_STATE_ENABLED){//wifi打开
                wifiManager.setWifiEnabled(false);
                Timer timer = new Timer();
                timer.schedule(new TimerTask() {
                    @Override
                    public void run() {
                        if(wifiManager.getWifiState()== WifiManager.WIFI_STATE_DISABLED){
                            callback.onWifiClosed();
                            timer.cancel();
                        }

                    }
                },0,500);
            }
        }catch (Exception e){
            e.printStackTrace();
        }

    }

    public static void openWifi(Context context){
        try{
            WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
            if(wifiManager.getWifiState()== WifiManager.WIFI_STATE_DISABLED){//wifi打开
                wifiManager.setWifiEnabled(true);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    public interface WifiChangeCallback{
        public void onWifiClosed();
        public void onWifiOpened();
    }

    public static void printNetInfo(){
        try {
            List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
            for (NetworkInterface intf : interfaces) {
                List<InetAddress> addrs = Collections.list(intf.getInetAddresses());
                for (InetAddress addr : addrs) {
                    if (!addr.isLoopbackAddress()) {
                        String sAddr = addr.getHostAddress();
                        Log.e("printNetInfo", "printNetInfo: "+sAddr );
                    }
                }
            }
        } catch (Exception ex) { }
    }
}