获取网络信息需要在AndroidManifest.xml文件中加入相应的权限。
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
判断是否有网络连接,但是如果该连接的网络无法上网,也会返回true
public static boolean isNetworkConnected(Context context) {
if (context != null) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
if (mNetworkInfo != null) {
//这种方法也可以
//return mNetworkInfo .getState()== NetworkInfo.State.CONNECTED
return mNetworkInfo.isAvailable();
}
}
return false;
}
当有网络连接时,如果想要检测当前连接的网络能否上网,需要能否打开网址来做判断,涉及到网络的在子线程里面执行
<uses-permission android:name="android.permission.INTERNET" />
/**
* 在子线程里开启该方法,可检测当前网络是否能打开网页
* true是可以上网,false是不能上网
*/
public static boolean isOnline() {
URL url;
try {
url = new URL("https://www.baidu.com");
InputStream stream = url.openStream();
return true;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
ping一个外网也可以起到同样的效果,要加网络权限,同样涉及到网络的在子线程里面执行
<uses-permission android:name="android.permission.INTERNET" />
//判断是否有外网连接(普通方法不能判断外网的网络是否连接,比如连接上局域网)
public static final boolean ping() {
String result = null;
try {
String ip = "www.baidu.com";// ping 的地址,可以换成任何一种可靠的外网
Process p = Runtime.getRuntime().exec("ping -c 3 -w 100 " + ip);// ping网址3次
//读取ping的内容,可以不加
InputStream input = p.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(input));
StringBuffer stringBuffer = new StringBuffer();
String content = "";
while ((content = in.readLine()) != null) {
stringBuffer.append(content);
}
Log.d("------ping-----", "result content : " + stringBuffer.toString());
// ping的状态
int status = p.waitFor();
if (status == 0) {
result = "success";
return true;
} else {
result = "failed";
}
} catch (IOException e) {
result = "IOException";
} catch (InterruptedException e) {
result = "InterruptedException";
} finally {
Log.d("----result---", "result = " + result);
}
return false;
}
转载于:https://blog.csdn.net/weixin_36637758/article/details/93644744