日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

Android之ConnectivityManager

發(fā)布時(shí)間:2023/12/19 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android之ConnectivityManager 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

 在android平臺(tái)中ConnectivityManager主要負(fù)責(zé)查詢網(wǎng)絡(luò)連接狀態(tài)以及在連接狀態(tài)有變化的時(shí)候發(fā)出通知。其主要的功能職責(zé)如下:

1、? 監(jiān)視網(wǎng)絡(luò)狀態(tài),包括(Wi-Fi、GPRS、UMTS等)

2、? 當(dāng)網(wǎng)絡(luò)狀態(tài)發(fā)生變化時(shí)發(fā)送廣播通知

3、? 當(dāng)網(wǎng)絡(luò)連接失敗后會(huì)嘗試連接其他網(wǎng)絡(luò)

4、? 為App提供API,用于獲取網(wǎng)絡(luò)狀態(tài)信息等

  該類中提供了一些常量,比如廣播Action、網(wǎng)絡(luò)類型等等,具體如下:

  公共的方法有:

  在上述方法中,常用的有g(shù)etActivieNetworkInfo、getAllNetworkInfo、getNetworkInfo(int networkType)等,這些方法返回NetworkInfo,該類用于描述網(wǎng)絡(luò)的狀態(tài)(mobile和wifi)。

  在NetworkInfo中定義了兩個(gè)內(nèi)部類,用于枚舉網(wǎng)絡(luò)的狀態(tài),兩個(gè)內(nèi)部類分別為NetworkInfo.DetailedState,精確的網(wǎng)絡(luò)狀態(tài);NetworkInfo.State,粗略的網(wǎng)絡(luò)狀態(tài)。

  NetworkInfo.DetailedState的枚舉值:

  NetworkInfo.State的枚舉值:

二者之間的對(duì)應(yīng)關(guān)系:

  在NetworkInfo中除了兩個(gè)內(nèi)部類外,還提供了一些方法,如

1、? getDetailedState():返回當(dāng)前精確的網(wǎng)絡(luò)狀態(tài)。

2、? getState():返回當(dāng)前粗略的網(wǎng)絡(luò)狀態(tài)。

3、? getType():返回當(dāng)前的網(wǎng)絡(luò)類型(mobile或者wi-fi)

4、? getTypeName():返回當(dāng)前網(wǎng)絡(luò)類型的名稱。如“WIFI”或者“MOBILE”

5、? isAvailable():判斷網(wǎng)絡(luò)是否有效可用。

6、? isConnected():判斷網(wǎng)絡(luò)是否已連接。

  下面,我們通過(guò)一個(gè)案例來(lái)展示ConnectityManager的具體用法。核心代碼如下:

public void getNetworkState(View v){//獲取ConnectivityManager connectivityManager=(ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE);NetworkInfo networkInfo=connectivityManager.getActiveNetworkInfo();StringBuilder sb = new StringBuilder();sb.append("TypeName:").append(networkInfo.getTypeName()).append("\n");sb.append("Type:").append(networkInfo.getType()).append("\n");sb.append("isAvailable:").append(networkInfo.isAvailable()).append("\n");sb.append("isConnected:").append(networkInfo.isConnected()).append("\n");NetworkInfo.DetailedState state= networkInfo.getDetailedState();String detailedState="";if(state== NetworkInfo.DetailedState.AUTHENTICATING){detailedState="AUTHENTICATING";}else if(state== NetworkInfo.DetailedState.BLOCKED){detailedState="BLOCKED";}else if(state== NetworkInfo.DetailedState.CONNECTED){detailedState="CONNECTED";}else if(state== NetworkInfo.DetailedState.CONNECTING){detailedState="CONNECTING";}else if(state== NetworkInfo.DetailedState.DISCONNECTED){detailedState="DISCONNECTED";}else if(state== NetworkInfo.DetailedState.DISCONNECTING){detailedState="DISCONNECTING";}else if(state== NetworkInfo.DetailedState.FAILED){detailedState="FAILED";}else if(state== NetworkInfo.DetailedState.IDLE){detailedState="IDLE";}else if(state== NetworkInfo.DetailedState.SCANNING){detailedState="SCANNING";}else if(state== NetworkInfo.DetailedState.OBTAINING_IPADDR){detailedState="OBTAINING_IPADDR";}else if(state== NetworkInfo.DetailedState.SUSPENDED){detailedState="SUSPENDED";}sb.append("DetailedState:").append(detailedState).append("\n");showState.setText(sb.toString()); }/*** 獲取搜有網(wǎng)絡(luò)* @param v*/ public void getNetwork(View v){ConnectivityManager connectivityManager=(ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE);StringBuilder stringBuilder = new StringBuilder();NetworkInfo[] networkInfos= connectivityManager.getAllNetworkInfo();for(NetworkInfo info:networkInfos){stringBuilder.append("Name:").append(info.getTypeName()).append(";isAvailable:").append(info.isAvailable()).append("\n");}showNetwork.setText(stringBuilder.toString()); }private BroadcastReceiver receiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {if(intent.getAction().equals("android.net.conn.CONNECTIVITY_CHANGE")){ConnectivityManager connectivityManager=(ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE);NetworkInfo info= connectivityManager.getActiveNetworkInfo();if(info!=null){if(info.getState()== NetworkInfo.State.CONNECTED){showChange.setText("網(wǎng)絡(luò)變化:網(wǎng)絡(luò)已連接!");}else{showChange.setText("網(wǎng)絡(luò)變化:網(wǎng)絡(luò)已斷開(kāi)!");}}else{showChange.setText("網(wǎng)絡(luò)變化:無(wú)網(wǎng)絡(luò)!");}}} };

  案例效果如下:

注意,以上代碼需要使用的如下權(quán)限:

<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>

?

轉(zhuǎn)載于:https://www.cnblogs.com/android-blogs/p/4962076.html

總結(jié)

以上是生活随笔為你收集整理的Android之ConnectivityManager的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。