【Android】使用ConnectivityManager與NetworkInfo實現判斷當前網路環境是否可用
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查詢當前可用網路的精確度
<nobr><a href="http://developer.android.com/reference/android/net/NetworkInfo.html" style="color:rgb(0,102,153); text-decoration:none">NetworkInfo</a></nobr> | <nobr><span class="sympad" style="margin-right:2px"><a href="http://developer.android.com/reference/android/net/ConnectivityManager.html#getActiveNetworkInfo()" style="color:rgb(0,102,153); text-decoration:none">getActiveNetworkInfo</a></span>()</nobr> |
<nobr><a href="http://developer.android.com/reference/android/net/NetworkInfo.html" style="color:rgb(0,102,153); text-decoration:none">NetworkInfo[]</a></nobr> | <nobr><span class="sympad" style="margin-right:2px"><a href="http://developer.android.com/reference/android/net/ConnectivityManager.html#getAllNetworkInfo()" style="color:rgb(0,102,153); text-decoration:none">getAllNetworkInfo</a></span>()</nobr> |
<nobr>boolean</nobr> |
<nobr><span class="sympad" style="margin-right:2px"><a href="http://developer.android.com/reference/android/net/ConnectivityManager.html#getBackgroundDataSetting()" style="color:rgb(0,102,153); text-decoration:none">getBackgroundDataSetting</a></span>()</nobr>
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.
|
<nobr><a href="http://developer.android.com/reference/android/net/NetworkInfo.html" style="color:rgb(0,102,153); text-decoration:none">NetworkInfo</a></nobr> | <nobr><span class="sympad" style="margin-right:2px"><a href="http://developer.android.com/reference/android/net/ConnectivityManager.html#getNetworkInfo(int)" style="color:rgb(0,102,153); text-decoration:none">getNetworkInfo</a></span>(int networkType)</nobr> |
<nobr>int</nobr> | <nobr><span class="sympad" style="margin-right:2px"><a href="http://developer.android.com/reference/android/net/ConnectivityManager.html#getNetworkPreference()" style="color:rgb(0,102,153); text-decoration:none">getNetworkPreference</a></span>()</nobr> |
<nobr>static boolean</nobr> | <nobr><span class="sympad" style="margin-right:2px"><a href="http://developer.android.com/reference/android/net/ConnectivityManager.html#isNetworkTypeValid(int)" style="color:rgb(0,102,153); text-decoration:none">isNetworkTypeValid</a></span>(int networkType)</nobr> |
<nobr>boolean</nobr> |
<nobr><span class="sympad" style="margin-right:2px"><a href="http://developer.android.com/reference/android/net/ConnectivityManager.html#requestRouteToHost(int,%20int)" style="color:rgb(0,102,153); text-decoration:none">requestRouteToHost</a></span>(int networkType,
int hostAddress)</nobr>
Ensure that a network route exists to deliver traffic to the specified host via the specified network interface.
|
<nobr>void</nobr> | <nobr><span class="sympad" style="margin-right:2px"><a href="http://developer.android.com/reference/android/net/ConnectivityManager.html#setNetworkPreference(int)" style="color:rgb(0,102,153); text-decoration:none">setNetworkPreference</a></span>(int preference)</nobr> |
<nobr>int</nobr> |
<nobr><span class="sympad" style="margin-right:2px"><a href="http://developer.android.com/reference/android/net/ConnectivityManager.html#startUsingNetworkFeature(int,%20java.lang.String)" style="color:rgb(0,102,153); text-decoration:none">startUsingNetworkFeature</a></span>(int
networkType,<a href="http://developer.android.com/reference/java/lang/String.html" style="color:rgb(0,102,153); text-decoration:none">String</a>feature)</nobr>
Tells the underlying networking system that the caller wants to begin using the named feature.
|
<nobr>int</nobr> |
<nobr><span class="sympad" style="margin-right:2px"><a href="http://developer.android.com/reference/android/net/ConnectivityManager.html#stopUsingNetworkFeature(int,%20java.lang.String)" style="color:rgb(0,102,153); text-decoration:none">stopUsingNetworkFeature</a></span>(int
networkType,<a href="http://developer.android.com/reference/java/lang/String.html" style="color:rgb(0,102,153); text-decoration:none">String</a>feature)</nobr>
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 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
<nobr><a href="http://developer.android.com/reference/android/net/NetworkInfo.DetailedState.html" style="color:rgb(0,102,153); text-decoration:none">NetworkInfo.DetailedState</a></nobr> |
<nobr><span class="sympad" style="margin-right:2px"><a href="http://developer.android.com/reference/android/net/NetworkInfo.html#getDetailedState()" style="color:rgb(0,102,153); text-decoration:none">getDetailedState</a></span>()</nobr>
Reports the current fine-grained state of the network.
|
||||||||||
<nobr><a href="http://developer.android.com/reference/java/lang/String.html" style="color:rgb(0,102,153); text-decoration:none">String</a></nobr> |
<nobr><span class="sympad" style="margin-right:2px"><a href="http://developer.android.com/reference/android/net/NetworkInfo.html#getExtraInfo()" style="color:rgb(0,102,153); text-decoration:none">getExtraInfo</a></span>()</nobr>
Report the extra information about the network state, if any was provided by the lower networking layers., if one is available.
|
||||||||||
<nobr><a href="http://developer.android.com/reference/java/lang/String.html" style="color:rgb(0,102,153); text-decoration:none">String</a></nobr> |
<nobr><span class="sympad" style="margin-right:2px"><a href="http://developer.android.com/reference/android/net/NetworkInfo.html#getReason()" style="color:rgb(0,102,153); text-decoration:none">getReason</a></span>()</nobr>
Report the reason an attempt to establish connectivity failed, if one is available.
|
||||||||||
<nobr><a href="http://developer.android.com/reference/android/net/NetworkInfo.State.html" style="color:rgb(0,102,153); text-decoration:none">NetworkInfo.State</a></nobr> |
<nobr><span class="sympad" style="margin-right:2px"><a href="http://developer.android.com/reference/android/net/NetworkInfo.html#getState()" style="color:rgb(0,102,153); text-decoration:none">getState</a></span>()</nobr>
Reports the current coarse-grained state of the network.
|
||||||||||
<nobr>int</nobr> |
<nobr><span class="sympad" style="margin-right:2px"><a href="http://developer.android.com/reference/android/net/NetworkInfo.html#getSubtype()" style="color:rgb(0,102,153); text-decoration:none">getSubtype</a></span>()</nobr>
Return a network-type-specific integer describing the subtype of the network.
|
||||||||||
<nobr><a href="http://developer.android.com/reference/java/lang/String.html" style="color:rgb(0,102,153); text-decoration:none">String</a></nobr> |
<nobr><span class="sympad" style="margin-right:2px"><a href="http://developer.android.com/reference/android/net/NetworkInfo.html#getSubtypeName()" style="color:rgb(0,102,153); text-decoration:none">getSubtypeName</a></span>()</nobr>
Return a human-readable name describing the subtype of the network.
|
||||||||||
<nobr>int</nobr> |
<nobr><span class="sympad" style="margin-right:2px"><a href="http://developer.android.com/reference/android/net/NetworkInfo.html#getType()" style="color:rgb(0,102,153); text-decoration:none">getType</a></span>()</nobr>
Reports the type of network (currently mobile or Wi-Fi) to which the info in this object pertains.
|
||||||||||
<nobr><a href="http://developer.android.com/reference/java/lang/String.html" style="color:rgb(0,102,153); text-decoration:none">String</a></nobr> |
<nobr><span class="sympad" style="margin-right:2px"><a href="http://developer.android.com/reference/android/net/NetworkInfo.html#getTypeName()" style="color:rgb(0,102,153); text-decoration:none">getTypeName</a></span>()</nobr>
Return a human-readable name describe the type of the network, for example "WIFI" or "MOBILE".
|
||||||||||
<nobr>boolean</nobr> |
<nobr><span class="sympad" style="margin-right:2px"><a href="http://developer.android.com/reference/android/net/NetworkInfo.html#isAvailable()" style="color:rgb(0,102,153); text-decoration:none">isAvailable</a></span>()</nobr>
Indicates whether network connectivity is possible.
|
||||||||||
<nobr>boolean</nobr> |
<nobr><span class="sympad" style="margin-right:2px"><a href="http://developer.android.com/reference/android/net/NetworkInfo.html#isConnected()" style="color:rgb(0,102,153); text-decoration:none">isConnected</a></span>()</nobr>
Indicates whether network connectivity exists and it is possible to establish connections and pass data.
|
||||||||||
<nobr>boolean</nobr> |
<nobr><span class="sympad" style="margin-right:2px"><a href="http://developer.android.com/reference/android/net/NetworkInfo.html#isConnectedOrConnecting()" style="color:rgb(0,102,153); text-decoration:none">isConnectedOrConnecting</a></span>()</nobr>
Indicates whether network connectivity exists or is in the process of being established.
|
||||||||||
<nobr>boolean</nobr> |
<nobr><span class="sympad" style="margin-right:2px"><a href="http://developer.android.com/reference/android/net/NetworkInfo.html#isFailover()" style="color:rgb(0,102,153); text-decoration:none">isFailover</a></span>()</nobr>
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.
|
||||||||||
<nobr>boolean</nobr> |
<nobr><span class="sympad" style="margin-right:2px"><a href="http://developer.android.com/reference/android/net/NetworkInfo.html#isRoaming()" style="color:rgb(0,102,153); text-decoration:none">isRoaming</a></span>()</nobr>
Indicates whether the device is currently roaming on this network.
|
||||||||||
<nobr><a href="http://developer.android.com/reference/java/lang/String.html" style="color:rgb(0,102,153); text-decoration:none">String</a></nobr> |
<nobr><span class="sympad" style="margin-right:2px"><a href="http://developer.android.com/reference/android/net/NetworkInfo.html#toString()" style="color:rgb(0,102,153); text-decoration:none">toString</a></span>()</nobr>
Returns a string containing a concise, human-readable description of this object.
|
一個用上面兩個類實現的查詢當前網路狀態是否可用的工具類:
上面這個類實現了單獨查詢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 用ping的方法判斷當前網路是否可用Android
- 而井教你判斷當前Javascript執行環境是否支援async函式JavaScript函式
- Android 判斷網路是否正常Android
- 如何通過Java程式碼判斷當前的環境是否支援JRE 9Java
- 判斷Android 當前版本是否為debug版本Android
- Android判斷當前裝置是否設定了代理Android
- Android 判斷當前的介面是否是桌面的方法Android
- Python判斷當前使用者是否是rootPython
- js實現的判斷當前瀏覽器是否flash程式碼例項JS瀏覽器
- 舒服的判斷當前應用是否處於前臺
- 判斷SD卡是否可用SD卡
- 判斷網路是否連線
- iOS判斷是否存在網路iOS
- javascript如何判斷當前瀏覽器是否支援cookieJavaScript瀏覽器Cookie
- Android 判斷當前系統語言Android
- 判斷當前使用者是否為系統管理員的例項
- js 怎樣判斷使用者是否在瀏覽當前頁面JS
- Linux Shell 判斷環境變數 是否存在Linux變數
- 如何判斷當前瀏覽器是否支援html5瀏覽器HTML
- 判斷當前viewcontroller是否是某個特定類ViewController
- android判斷當前系統的語言Android
- JS在瀏覽器中判斷當前網路狀態JS瀏覽器
- 判斷環境使用 Laravel Page SpeedLaravel
- Android 判斷當前執行緒是否是主執行緒的兩種方法Android執行緒
- Android判斷當前棧頂Activity的包名Android
- wegame當前上網環境異常,請更換網路環境怎麼解決GAM
- 判斷是否能連線網際網路
- js如何判斷當前瀏覽器是否是谷歌瀏覽器JS瀏覽器谷歌
- 帝國CMS利用PHP判斷當前頁面是否為首頁PHP
- 判斷當前程式是否正在執行
- Windows下bat指令碼判斷埠是否可用WindowsBAT指令碼
- 如何判斷網校原始碼是否值得使用?原始碼
- 網路遊戲公司如何判斷是否被攻擊?遊戲
- 一句話判斷網路是否聯通
- 判斷當前應用程式處於前臺還是後臺 ANDROIDAndroid
- canvas實現判斷兩球是否碰撞效果Canvas
- C#實現判斷字元是否為中文C#字元