您的位置:首页 > 理论基础 > 计算机网络

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

2017-07-21 13:34 609 查看

一、前言

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐