获取当前网络信息,状态,以及ping网址

一、前言

Android开发中,经常会涉及到手机网络的状态。

二、内容

首先需要在AndroidManifest.xml文件中加上访问网络的权限:

<!--允许程序打开网络套接字-->
<uses-permission android:name="android.permission.INTERNET" />

1.判断当前有无网络连接:

public static boolean hasNetwork(Context var0) {
    if (var0 != null) {
        // 获取网络管理者
        ConnectivityManager var1 = (ConnectivityManager) var0.getSystemService("connectivity");
        NetworkInfo var2 = var1.getActiveNetworkInfo();
        return var2 != null ? var2.isAvailable() : false;
    } else {
        return false;
    }
}

2.判断是否有WIFI连接:

public static boolean isWifiConnection(Context var0) {
    ConnectivityManager var1 = (ConnectivityManager) var0.getSystemService("connectivity");
    NetworkInfo var2 = var1.getNetworkInfo(1);
    if (var2 != null && var2.isAvailable() && var2.isConnected()) {
        Log.d("net", "wifi is connected");
        return true;
    } else {
        return false;
    }
}

3.判断是否有移动网络连接:

public static boolean isMobileConnection(Context var0) {
    ConnectivityManager var1 = (ConnectivityManager) var0.getSystemService("connectivity");
    NetworkInfo var2 = var1.getNetworkInfo(0);
    if (var2 != null && var2.isAvailable() && var2.isConnected()) {
        return true;
    } else {
        return false;
    }
}

4.获取WiFi名称:

public static String getWiFiSSID(Context var0) {
    ConnectivityManager var1 = (ConnectivityManager) var0.getSystemService("connectivity");
    NetworkInfo var2 = var1.getNetworkInfo(1);
    WifiManager var3 = (WifiManager) var0.getSystemService("wifi");
    WifiInfo var4 = var3.getConnectionInfo();
    return var4.getSSID();
}

5.获取当前网络状态的类型:

public static String getNetworkType(Context var0) {
    ConnectivityManager var1 = (ConnectivityManager) var0.getSystemService("connectivity");
    NetworkInfo var2 = var1.getActiveNetworkInfo();
    if (var2 != null && var2.isAvailable()) {
        int var3 = var2.getType();
        if (Build.VERSION.SDK_INT >= 13 && var3 == 9) {
            return "ETHERNET";
        } else if (var3 == 1) {
            return "WIFI";
        } else {
            TelephonyManager var4 = (TelephonyManager) var0
                    .getSystemService("phone");
            switch (var4.getNetworkType()) {
                case 1:
                case 2:
                case 4:
                case 7:
                case 11:
                    return "2G";
                case 3:
                case 5:
                case 6:
                case 8:
                case 9:
                case 10:
                case 12:
                case 14:
                case 15:
                    return "3G";
                case 13:
                    return "4G";
                default:
                    return "unkonw network";
            }
        }
    } else {
        return "no network";
    }
}

6.移动端ping 网址:

public static boolean Ping(String str) {
    boolean result = false;
    Process p;
    try {
        p = Runtime.getRuntime().exec("/system/bin/ping -c 3 -w 5 " + str);//其中:-c 3是指ping 3次 ,-w 5 指超时时间为5秒
        int status = p.waitFor();
        InputStream input = p.getInputStream();
        BufferedReader in = new BufferedReader(new InputStreamReader(input));
        StringBuffer buffer = new StringBuffer();
        String line = "";
        while ((line = in.readLine()) != null) {
            buffer.append(line);
        }
        in.close();
        input.close();
        if (status == 0) {
            result = true;
        } else {
            result = false;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return result;
}

猜你喜欢

转载自blog.csdn.net/wangwasdf/article/details/75640153