各位看官们大家好,上一回中咱们说的例子是"在Android中使用MQTT通信七",本章回介绍的例子是" 获取网络状态"。闲话休提,言归正转,让我们一起Talk Android吧!
概念介绍
在项目中经常会访问网络,比如我们在前面章回中介绍的Htpp请求以及最近章回中介绍的MQTT操作,在网络操作前需要判断网络的连接状态,不然可能因为网络问题导致程序运行失败。如果没有网络或者网络比较差时需要给用户提示,让用户明白是网络问题导致的程序失败。本章回中将介绍如何获取网络连接状态。
实现方法
- 申请网络操作相关的权限,静态申请就可以;
- 获取网络管理器:
ConnectivityManager - 通过网络管理器的
getActiveNetworkInfo()方法获取网络连接状态对象; - 通过网络连接状态对象的
isConnected()方法获取网络的连接状态;
网络连接状态使用NetworkInfo类表示,它除了可以获取网络连接状态外还可以获取到网络的类型,比如移动网络还是WIFI网络。不过该类在在新版本中已经被弃用了官方文档显示:
This class was deprecated in API level 29.
官方建议使用ConnectivityManager.NetworkCallback API,因为该API是异步的。我们在代码中使用时可以依据不同的SDK版本来选择不同的API。
示例代码
private void getNetworkState() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
Network network = connectivityManager.getActiveNetwork();
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if(network != null && networkInfo.isConnected()) {
Log.d(TAG, "getNetworkState: network is connected");
}else {
Log.d(TAG, "getNetworkState: network is not connected");
}
}
在上面的代码中,我们把获取网络连接状态的功能封装成了一个函数,这样方便使用。代码中依据网络的连接状态打印了不同的日志,大家可以依据实际情况做不同的处理,比如网络连接时就去通过HTTP或者MQTT访问网络操作,网络没有连接时就提示用户当前网络没有连接,app连网功能无法使用。
注意使用上面的代码时一定在要配置文件中申请网络权限,详细如下:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
看官们,关于"获取网络状态"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!
文章介绍了在Android应用开发中如何获取网络连接状态,包括使用ConnectivityManager检查网络是否连接,以及在不同SDK版本下选择合适的API。示例代码展示了如何封装一个函数来判断网络连接,并提醒开发者需要在manifest中申请相应的网络权限。
550

被折叠的 条评论
为什么被折叠?



