java.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.
|
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情况下才进行下载的操作,等等。
谢谢!