【Android】使用ConnectivityManager与NetworkInfo实现判断当前网络环境是否可用
2016-11-27 15:48
726 查看
public class
extends Object
这个类用来查询当前网络状态,通知网络状态变化。
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 calling
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查询当前可用网络的精确度
public class
extends Object
implements Parcelable
Describes the status of a network interface of a given type (currently either Mobile or Wifi).
描述目前网络的状态()
plain copy
print?
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提供的接口实现的功能!
[java] view
plain copy
print?
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;
}
[java] view
plain copy
print?
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 calling
Context.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 return true. 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. |
NetworkInfo
extends Objectimplements Parcelable
java.lang.Object | |
↳ | android.net.NetworkInfo |
描述目前网络的状态()
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. |
一个用上面两个类实现的查询当前网络状态是否可用的工具类:
[java] viewplain copy
print?
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提供的接口实现的功能!
[java] view
plain copy
print?
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;
}
[java] view
plain copy
print?
isConnectionAvailable则实现了所有网络是否可用的判断,程序不关心当前使用的是何种网络,只需关系是否连接上互联网既可,第一个工具类在某些时候会需要使用到,比如只在WiFi情况下才进行下载的操作,等等。
谢谢!
相关文章推荐
- 【Android】使用ConnectivityManager与NetworkInfo实现判断当前网络环境是否可用
- android 判断当前环境网络是否可用及获取当前网络类型
- Android检测网络状态,判断当前网络是否可用
- Android 判断当前网络连接是否可用、打开设置网络界面
- Android中判断当前网络是否可用
- android 程序中判断当前是否连接网络,网络是否可用
- Android中判断当前网络是否可用
- Android--用ping的方法判断当前网络是否可用
- Android判断当前网络是否可用--示例代码
- 『转』android 程序中判断当前是否连接网络,网络是否可用
- Android判断网络状态是否断开+Android完全关闭应用程序+ 本文讲述了Android中不同Activity之间的数据传递 — Bundle对象的实现(-)+Android中Bundle的使用示例
- Android判断当前网络是否可用--示例代码
- Android检测网络状态,判断当前网络是否可用
- Android判断当前网络是否可用--示例代码
- Android中判断当前网络是否可用
- Android判断当前网络是否可用--示例代码(转载)
- Android-判断当前网络是否可用
- Android判断当前网络是否可用--示例代码
- Android判断当前网络是否可用
- Android判断当前网络是否可用--示例代码