检查网络连接状况
16lz
2021-01-26
译自:http://www.grokkingandroid.com/android-checking-connectivity/
不管在什么时候,当你的应用需要去访问网络时,你事先都应该知道设备当前已经连上了网络。为了更好的获取设备的网络连接状态,Android提供了两个class来做这件事,分别是ConnectivityManager和NetworkInfo。
一般情况下我们都不需要主动的创建
ConnectivityManager对象实例,我们可以通过上下文对象Context来获取一个实例
ConnectivityManager connManager = (ConnectivityManager)context. getSystemService(Context.CONNECTIVITY_SERVICE);ConnectivityManager本身其实并没有多大的作用,但它可以获取到 NetworkInfo对象(获取当前的网络连接状态)。有三种方式可以获取到NetworkInfo对象,但是如果你想马上知道网络连接状态的话,下面做法效果最好
NetworkInfo info = connManager.getActiveNetworkInfo();或者你也可以通过ConnectivityManager获取到系统中一组可用的NetworkInfo对象。每一个NetworkInfo都代表了一种网络类型(e.g. WIFI)。
NetworkInfo info = connManager.getAllNetworkInfo();通过NetworkInfo对象你能获取到关于一种网络类型所有的信息。你可以检测某一种网络类型当前是否可用,如果当前已经连接到网络了,你能获取到当前连接的网络是那种类型
下面是一些NetworkInfo类比较重要的方法。屏幕上显示的是这些方法执行的结果(WIFI或者UMTS网络的信息)
info.isAvailable()info.isConnected()info.isConnectedOrConnecting()info.getState()info.getDetailedState()info.getTypeName()info.getType()info.getSubtypeName()info.getSubtype()
NetworkInfo showing only disconnected states
NetworkInfo showing an established WIFI connection
NetworkInfo showing an established UMTS connection
访问网络的连接状态需要明确的在manifest文件中声明权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />相关文章:
- Android: Getting Notified of Connectivity Changes
更多相关文章
- Android(安卓)数据显示在屏幕上
- Android源码分析-全面理解Context
- Android(安卓)Support Design 中 CoordinatorLayout 与 Behavior
- 网络连接和概述
- 【Android】 在Andorid中解析Json数据示例
- Android(安卓)SurviceView的触控和轨迹球事件
- android网络请求框架Volley(二)
- android studio 混淆打包apk后volley无法访问网络
- Android(安卓)-- 再来一发Json