【Android】使用ConnectivityManager与NetworkInfo实现判断当前网络环境是否可用
16lz
2022-05-30
public class
public class
implements Parcelable
上面这个类实现了单独查询WiFi与Mobile的移动网络是否可用,可以看到就是使用了ConnectivityManager与NetworkInfo提供的接口实现的功能!
isConnectionAvailable则实现了所有网络是否可用的判断,程序不关心当前使用的是何种网络,只需关系是否连接上互联网既可,第一个工具类在某些时候会需要使用到,比如只在WiFi情况下才进行下载的操作,等等。
谢谢!
ConnectivityManager
extends Objectjava.lang.Object | |
↳ | android.net.ConnectivityManager |
这个类用来查询当前网络状态,通知网络状态变化。
Class that answers queries about the state of network connectivity. It also notifies applications when network connectivity changes. Get an instance of this class by callingContext.getSystemService(Context.CONNECTIVITY_SERVICE)
.
The primary responsibilities of this class are to:
- Monitor network connections (Wi-Fi, GPRS, UMTS, etc.)
- Send broadcast intents when network connectivity changes
- Attempt to "fail over" to another network when connectivity to a network is lost
- Provide an API that allows applications to query the coarse-grained or fine-grained state of the available networks.
- 监视网络连接(WIFI,GPRS,UMTS等)
- 当网络变化时发出broadcast.
- 当目前的网络丢失的时候尝试转移到另一个网络
- 提供API来允许AP查询当前可用网络的精确度
NetworkInfo | getActiveNetworkInfo() |
NetworkInfo[] | getAllNetworkInfo() |
boolean | getBackgroundDataSetting() This method is deprecated. As of ICE_CREAM_SANDWICH , availability of background data depends on several combined factors, and this method will always returntrue . Instead, when background data is unavailable, getActiveNetworkInfo() will now appear disconnected. |
NetworkInfo | getNetworkInfo(int networkType) |
int | getNetworkPreference() |
static boolean | isNetworkTypeValid(int networkType) |
boolean | requestRouteToHost(int networkType, int hostAddress) Ensure that a network route exists to deliver traffic to the specified host via the specified network interface. |
void | setNetworkPreference(int preference) |
int | startUsingNetworkFeature(int networkType, String feature) Tells the underlying networking system that the caller wants to begin using the named feature. |
int | stopUsingNetworkFeature(int networkType, String feature) Tells the underlying networking system that the caller is finished using the named feature. |
public class
NetworkInfo
extends Objectimplements Parcelable
java.lang.Object | |
↳ | android.net.NetworkInfo |
Describes the status of a network interface of a given type (currently either Mobile or Wifi).
描述目前网络的状态()
Detailed state | Coarse-grained state |
IDLE | DISCONNECTED |
SCANNING | CONNECTING |
CONNECTING | CONNECTING |
AUTHENTICATING | CONNECTING |
CONNECTED | |
DISCONNECTING | DISCONNECTING |
DISCONNECTED | DISCONNECTED |
UNAVAILABLE | DISCONNECTED |
FAILED | DISCONNECTED |
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
NetworkInfo.DetailedState | getDetailedState() Reports the current fine-grained state of the network. | ||||||||||
String | getExtraInfo() Report the extra information about the network state, if any was provided by the lower networking layers., if one is available. | ||||||||||
String | getReason() Report the reason an attempt to establish connectivity failed, if one is available. | ||||||||||
NetworkInfo.State | getState() Reports the current coarse-grained state of the network. | ||||||||||
int | getSubtype() Return a network-type-specific integer describing the subtype of the network. | ||||||||||
String | getSubtypeName() Return a human-readable name describing the subtype of the network. | ||||||||||
int | getType() Reports the type of network (currently mobile or Wi-Fi) to which the info in this object pertains. | ||||||||||
String | getTypeName() Return a human-readable name describe the type of the network, for example "WIFI" or "MOBILE". | ||||||||||
boolean | isAvailable() Indicates whether network connectivity is possible. | ||||||||||
boolean | isConnected() Indicates whether network connectivity exists and it is possible to establish connections and pass data. | ||||||||||
boolean | isConnectedOrConnecting() Indicates whether network connectivity exists or is in the process of being established. | ||||||||||
boolean | isFailover() Indicates whether the current attempt to connect to the network resulted from the ConnectivityManager trying to fail over to this network following a disconnect from another network. | ||||||||||
boolean | isRoaming() Indicates whether the device is currently roaming on this network. | ||||||||||
String | toString() Returns a string containing a concise, human-readable description of this object. |
一个用上面两个类实现的查询当前网络状态是否可用的工具类:
public static boolean isNetworkAvailable(Context context){ConnectivityManager mConnMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo mWifi = mConnMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);NetworkInfo mMobile = mConnMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);boolean flag = false;if((mWifi != null)&& ((mWifi.isAvailable()) || (mMobile.isAvailable()))){if((mWifi.isConnected()) || (mMobile.isConnected())){flag = true;}}return flag;}
上面这个类实现了单独查询WiFi与Mobile的移动网络是否可用,可以看到就是使用了ConnectivityManager与NetworkInfo提供的接口实现的功能!
public static boolean isConnectionAvailable(Context cotext) { boolean isConnectionFail = true; ConnectivityManager connectivityManager = (ConnectivityManager)cotext.getSystemService(Context.CONNECTIVITY_SERVICE);if (connectivityManager != null) {NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();if (activeNetworkInfo == null || !activeNetworkInfo.isConnected()) {isConnectionFail = true;} else {isConnectionFail = false;}} else {Log.e(TAG, "Can't get connectivitManager");}return isConnectionFail;}
isConnectionAvailable则实现了所有网络是否可用的判断,程序不关心当前使用的是何种网络,只需关系是否连接上互联网既可,第一个工具类在某些时候会需要使用到,比如只在WiFi情况下才进行下载的操作,等等。
谢谢!
更多相关文章
- android 判断 网络 类型
- android网络连接
- Android(安卓)网络连接-重试机制-HttpRequestRetryHandler(HttpCl
- android 网络判断的几种方法
- Android(安卓)正则表达式验证手机和邮箱格式是否正确
- Android(安卓)获得可用摄像头id
- android全屏显示
- android MediaPlayer SurfaceView 网络视频播放器
- Android中判断网络连接是否可用及监控网络状态