導航:首頁 > 操作系統 > android監控網路連接

android監控網路連接

發布時間:2023-08-27 14:02:26

android監聽網路狀態框架

就這么簡單,讓我們開始吧。

看下最終實現的使用:

日誌:

好了,新建一個AndroidLibray開始實現。

許可權走一波:

首先,咱們需要一個監聽網路狀態的工具類

在lib中創建一個廣播,然後再配置文件里注冊一下。

完善下咱們的receiver:

監聽介面:

manager:

再加上一個枚舉類:

OK,一套正常操作,一個最普通網路監聽類寫完了。接著咱們嘗試用註解,讓這個小框架看的有檔次些。

完善一下自定義註解:

然後來捋一下思路:

照樣是固定三部曲,按照步驟來:

1.先完善我們的注冊方法

在這里,我創建了一個方法封裝類。比較簡單: MethodManager

這里的 mMethodList 是方法封裝類(MethodManager)的List,用來存儲篩選後的MainActivity中方法,也就是網路監聽方法。以下是方法的篩選:

咱們定義一個post方法,去完成這項工作:

這里實現了通過網路監聽註解上方的參數,我們可以單獨監聽某一種網路狀態的變化。比如

上方參數表明,只有在WIFI斷開和連接的時候,方法才會做出響應。想要所有提示設置為AUTO就行啦。

OK,做完邏輯以後執行一下:

大功告成!跑一下看看效果!

項目地址: https://github.com/CocoYuki/NetListener

是一個練手的小項目,實際網路請求在7.0時就能通過一個CallBack輕松搞定了。

② 如何監控android網路請求

如果你想在logcat用列印的方式監控的話可以在發送請求的地方打log;

也可以用抓包工具進行網路請求的抓取,這樣的優勢在於你可以看到HTTP請求的具體信息,如post提交的內容,請求頭信息,伺服器返回錯誤等信息。常用的抓包工具有fiddler,Wireshark等,具體配置過程可以搜索相關教程。

③ android 怎麼監控網路狀態可以訪問互聯網而不是連接狀態

在開發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);
}

④ android開發怎麼監聽網路請求

Android中網路情況時有變化,比如從有網到沒網,從wifi到gprs,gprs又從cmwap到cmnet...等等!
如果你的程序有些功能是需要網路支持的,有時候就需要監聽到網路的變化情況進行相應的處理。
比如說下載一個文件,如果突然斷網了,怎麼處理?網路又恢復了,如何監聽到並重連?

當網路變化的時候系統會發出義個廣播broadcast,只要在程序中注冊一個廣播接收器BroadcastReceiver,並在IntentFilter中添加相應的過濾,這樣一旦網路有變化,程序就能監聽到
public static final String CONNECTIVITY_CHANGE_ACTION = "android.net.conn.CONNECTIVITY_CHANGE";
private void registerDateTransReceiver() {
Log.i(TAG, "register receiver " + CONNECTIVITY_CHANGE_ACTION);
IntentFilter filter = new IntentFilter();
filter.addAction(CONNECTIVITY_CHANGE_ACTION);
filter.setPriority(1000);
registerReceiver(new MyReceiver(), filter);
}

在MyReceiver中:
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.i(TAG, "PfDataTransReceiver receive action " + action);
if(TextUtils.equals(action, CONNECTIVITY_CHANGE_ACTION)){//網路變化的時候會發送通知
Log.i(TAG, "網路變化了");
return;
}
}

當網路變化時,從有網到沒網也會發廣播,就舉的例子來說,如果下載時斷網了,接收到廣播的時候要判斷當前網路是可用還是不可用狀態,如果可用進行什麼操作;不可用進行什麼操作:
public static NetworkInfo getActiveNetwork(Context context){
if (context == null)
return null;
ConnectivityManager mConnMgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (mConnMgr == null)
return null;
NetworkInfo aActiveInfo = mConnMgr.getActiveNetworkInfo(); // 獲取活動網路連接信息
return aActiveInfo;
}

這個方法返回的aActiveInfo可以判斷網路的有無,如果返回的是null,這時候是斷網了,如果返回對象不為空,則是連上了網。在返回的NetworkInfo對象里,可以有對象的方法獲取更多的當前網路信息,比如是wifi還是cmwap等,就不多說了。

閱讀全文

與android監控網路連接相關的資料

熱點內容
r1234yf汽車空調壓縮機 瀏覽:143
ftp伺服器地址欄 瀏覽:898
linux圖形分區 瀏覽:963
安徽到遼寧源碼 瀏覽:575
libs安卓的文件夾叫什麼 瀏覽:869
生意圈app是什麼意思 瀏覽:395
linuxarcgisserver 瀏覽:234
加密pdf怎麼修改文件 瀏覽:138
紅米刷機無命令怎麼辦 瀏覽:356
啥叫美國谷歌外包程序員 瀏覽:260
雲伺服器管家婆 瀏覽:440
發郵件命令 瀏覽:354
程序員好做嗎工作好嗎 瀏覽:886
雲電腦伺服器維護一個月多少錢 瀏覽:882
有沒有什麼app數學題型較多 瀏覽:341
政策pdf 瀏覽:295
有什麼好玩的文娛app 瀏覽:811
python教學合集 瀏覽:959
有什麼好用的小眾app嗎 瀏覽:118
芋道app源碼 瀏覽:448