国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android 監聽網絡狀態方法詳解

2019-10-22 18:32:46
字體:
來源:轉載
供稿:網友

Android 監聽網絡狀態方法詳解

一.加入網絡權限

獲取網絡信息需要在AndroidManifest.xml文件中加入相應的權限。

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

二.判斷手機網絡的幾個方案

1)判斷是否有網絡連接

public boolean isMobileConnected(Context context) {    if (context != null) {      ConnectivityManager mConnectivityManager = (ConnectivityManager) context          .getSystemService(Context.CONNECTIVITY_SERVICE);      NetworkInfo mMobileNetworkInfo = mConnectivityManager          .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);      if (mMobileNetworkInfo != null) {        return mMobileNetworkInfo.isAvailable();      }    }    return false;  } 

2)判斷WIFI網絡是否可用

public boolean isWifiConnected(Context context) {    if (context != null) {      ConnectivityManager mConnectivityManager = (ConnectivityManager) context          .getSystemService(Context.CONNECTIVITY_SERVICE);      NetworkInfo mWiFiNetworkInfo = mConnectivityManager          .getNetworkInfo(ConnectivityManager.TYPE_WIFI);      if (mWiFiNetworkInfo != null) {        return mWiFiNetworkInfo.isAvailable();      }    }    return false;  } 

 4)獲取當前網絡連接的類型信息

public static int getConnectedType(Context context) {    if (context != null) {      ConnectivityManager mConnectivityManager = (ConnectivityManager) context          .getSystemService(Context.CONNECTIVITY_SERVICE);      NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();      if (mNetworkInfo != null && mNetworkInfo.isAvailable()) {        return mNetworkInfo.getType();      }    }    return -1;  } 

在開發android應用時,涉及到要進行網絡訪問,時常需要進行網絡狀態的檢查,以提供給用戶必要的提醒。一般可以通過ConnectivityManager來完成該工作。

ConnectivityManager有四個主要任務:

1、監聽手機網絡狀態(包括GPRS,WIFI, UMTS等)
2、手機狀態發生改變時,發送廣播
3、當一個網絡連接失敗時進行故障切換
4、為應用程序提供可以獲取可用網絡的高精度和粗糙的狀態

當我們要在程序中監聽網絡狀態時,只要一下幾個步驟即可:

1、定義一個Receiver重載其中的onReceive函數,在其中完成所需要的功能,如根據WIFI和GPRS是否斷開來改變空間的外觀

connectionReceiver = new BroadcastReceiver() {      @Override   public void onReceive(Context context, Intent intent) {   ConnectivityManager connectMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);   NetworkInfo mobNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);   NetworkInfo wifiNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);    if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {    Log.i(TAG, "unconnect");    // unconnect network 這時提示用戶網絡斷開信息    }else {    // connect network   可以做一些網絡請求,刷新界面    }   }  }; 

2、在適當的地方注冊Receiver,可以在程序中注冊,在onCreate中調用如下函數即可

IntentFilter intentFilter = new IntentFilter();  intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);  registerReceiver(connectionReceiver, intentFilter); 

3、在適當時取消注冊Receiver,可以在程序中取消,在onDestroye中調用如下函數即可:

if (connectionReceiver != null) {   unregisterReceiver(connectionReceiver);  } 

說了這么多。其實主要是通過ConnectivityManager獲取當前的網絡狀態,或者監聽網絡狀態的改變。這樣,當應用需要聯網時,網絡狀態發生改變可以及時提示用戶,或者當網絡重新連接時自動獲取網絡數據進行刷新。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 无锡市| 揭东县| 兴城市| 祁东县| 黄大仙区| 临漳县| 深泽县| 开化县| 新闻| 岳普湖县| 连山| 内丘县| 当阳市| 金华市| 新绛县| 丰台区| 濮阳县| 布尔津县| 云梦县| 民乐县| 兴山县| 马尔康县| 莱阳市| 简阳市| 石柱| 军事| 任丘市| 灵寿县| 贺兰县| 阿尔山市| 天长市| 壶关县| 九龙县| 马鞍山市| 揭西县| 七台河市| 阿合奇县| 沂水县| 融水| 满洲里市| 临安市|