android監控網路
① 安卓網路狀態監聽有問題
安卓網路狀態監聽有問題是缺陷問題。根據查詢相關公開信息顯示,在Android開發過程中,為了用戶體驗,比如微信等軟體,都會在網路不可用或有問題時,提示用戶不可用,因此開發者需要判斷網路狀態並且實時監聽。
② android中如何監聽到其他應用的網路請求數據
目前android提供的工具沒事,我們寫工程都是自己寫http請求,每次請求的時候打Log,記錄請求的url和參數。請求回來了,打log,記錄回來的數據,記錄數據的狀態,數據的內容。 目前只能這樣。如果用模擬器的話,可以用vnStat或者CommView之類的監控電腦網卡的請求,間接的監控手機。一般開發用手機測試,這樣就不行了。只能打log了
③ Android 快速實現網路監聽
github: https://github.com/Levine1992/HttpCapture
看不到動圖可以到我的碼雲倉庫看 點擊跳轉碼雲
1. 項目根目錄的build.gradle中添加
2. app目錄中build.gradle中添加
3. application中進行初始化
4. okhttp添加攔截器
這樣,打開你的app的時候就可以像上面的動畫一樣有一個黑色浮窗按鈕了,點擊隨時可以查看app的網路請求信息了
這個時候自己實現一下 HCNetDataConvert 介面,對數據進行解密
然後在攔截器中實例化
其實這個很簡單,但是自己一直沒發現有人寫,所以自己就寫了個,方便大家,如果有人寫了而且寫的功能更強大,請告訴我學習學習
④ Carson帶你學Android:檢測網路狀態&監聽網路變化
由於在API23及以上時,getNetworkInfo(int networkType)方法已被棄用,取而代之的是:
所以檢測網路狀態時需要分版本進行檢測
使用BroadcastReceiver廣播接收器來接收網路狀態(採用系統廣播)
接下來我將用一個實例進行網路狀態的監聽和檢測。
NetWorkStateReceiver.java
注冊分為:動態注冊和靜態注冊
MainActivity.java
在AndroidManifest.xml進行廣播的靜態注冊
AndroidManifest.xml
AndroidManifest.xml
Carson的Github地址: Check_Net
不定期分享關於 安卓開發 的干貨,追求 短、平、快 ,但 卻不缺深度 。
⑤ 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 怎麼監控網路狀態可以訪問互聯網而不是連接狀態
在開發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監聽網路狀態框架
就這么簡單,讓我們開始吧。
看下最終實現的使用:
日誌:
好了,新建一個AndroidLibray開始實現。
許可權走一波:
首先,咱們需要一個監聽網路狀態的工具類
在lib中創建一個廣播,然後再配置文件里注冊一下。
完善下咱們的receiver:
監聽介面:
manager:
再加上一個枚舉類:
OK,一套正常操作,一個最普通網路監聽類寫完了。接著咱們嘗試用註解,讓這個小框架看的有檔次些。
完善一下自定義註解:
然後來捋一下思路:
照樣是固定三部曲,按照步驟來:
1.先完善我們的注冊方法
在這里,我創建了一個方法封裝類。比較簡單: MethodManager
這里的 mMethodList 是方法封裝類(MethodManager)的List,用來存儲篩選後的MainActivity中方法,也就是網路監聽方法。以下是方法的篩選:
咱們定義一個post方法,去完成這項工作:
這里實現了通過網路監聽註解上方的參數,我們可以單獨監聽某一種網路狀態的變化。比如
上方參數表明,只有在WIFI斷開和連接的時候,方法才會做出響應。想要所有提示設置為AUTO就行啦。
OK,做完邏輯以後執行一下:
大功告成!跑一下看看效果!
項目地址: https://github.com/CocoYuki/NetListener
是一個練手的小項目,實際網路請求在7.0時就能通過一個CallBack輕松搞定了。
⑧ 如何監控android網路請求
可以利用相關安全軟體來監控,如果有ROOT許可權更好。首推LBE安全大師,你的採納就是對我的肯定
⑨ Android 超簡單實現網路狀態的監聽
我們做項目的時候,不可避免的要做網路狀態的監聽,一般我們都是抽取出一個工具類來實現,比如:
細致的你當然還會再寫一個判斷網路類型的方法,反手再來一個例:
然後就可以在相應的操作前進行判斷網路的判斷:
但是這樣做也有些問題:
接下來就是本文的重點,如何通過 NetStatusBus 這個庫來解決以上問題,讓你的網路狀態監聽變得前所未有的簡單粗暴。
到這里就已經結束了,你的所有網路操作已經都可以清晰優雅的在訂閱方法中進行處理了,當然你也可以繼續往下看。
訂閱方法必須填寫一個NetType參數,可以通過NetType的值來判斷當前網路類型。
@NetSubscribe中 netType為可選值,可以設置訂閱的類型,可選值類型如下:
NetType.AUTO
這是默認值,任何網路狀態發生變化,該類型訂閱者都會被回調。同時會傳入NetType參數告知你當前的網路類型,示例如下:
只要當前是由 WIFI 改變引發的網路狀態變化,該類型訂閱者都會被回調。同時會傳入NetType參數告知你當前的網路類型,示例如下:
只要當前是由移動網路改變引發的網路狀態變化,該類型訂閱者都會被回調。同時會傳入NetType參數告知你當前的網路類型,示例如下:
NetType.NONE
只有當網路丟失時,該類型訂閱者才會被回調。
有人會覺得,我用個庫爽就行了管它的原理干什麼?
你放心,我只是小小的描述一下實現方式。
原理簡單來說,就是在全局初始化的時候就綁定對網路的變化監聽。然後將進行注冊的父類所有的訂閱方法保存至集合中,這里涉及到一些方法的校驗,最後在網路狀態發生改變時利用 Java 反射機制遍歷執行所有訂閱方法。熟悉 EventBus 的小夥伴已經看出來了這里借鑒了一小部分 EventBus 的思想。
回到第一步,那麼具體是如何綁定對網路狀態變化的監聽呢?
以前我們是通過注冊廣播來實現綁定網路變更的監聽,在Android 7.0 以後,Google 基於性能和安全原因對廣播進行了很多限制,比如監聽網路變更的廣播 android.net.conn.CONNECTIVITY_CHANGE 使用靜態注冊的方式則無法生效,而動態注冊的方式雖然可以生效但畢竟不是最優解。
同樣出於性能和安全,以及擁抱變化的角度,最終我們還是使用官方推薦的方式,利用 ConnectivityManager.NetworkCallback 來進行網路變化的監聽,這是在Android 5.0即android api 21推出的API,目前Android 5.0以上的市場佔有率在 85%以上,隨著國內各大廠商正在積極的推進適配普及Android Q,這個比例還會進一步增大,所以個人人認為無需過於擔心低版本適配。
使用的時候出現這個問題是由於少添加了許可權。
Caused by: java.lang.SecurityException: ConnectivityService: Neither user 10513 nor current process has android.permission.ACCESS_NETWORK_STATE.
java.lang.RuntimeException: Unable to create application com.jiyun.wanandroid.WanApplication: java.lang.SecurityException: ConnectivityService: Neither user 10513 nor current process has android.permission.ACCESS_NETWORK_STATE.
加上這幾個許可權就好了:
附上原文地址: https://www.jianshu.com/p/2fea980b3e56
⑩ 安卓手機有哪些監控軟體
騰訊雲應用監控。
智能手機是具有獨立的操作系統,獨立的運行空間,可以由用戶自行安裝軟體,游戲,導航等第三方服務商提供的設備,並可以通過移動通訊網路來實現無線網路接入的手機類型的總稱,智能手機具有優秀的操作系統,可自由安裝各類軟體,完全大屏的全觸屏式操作感這三大特性。
不同操作系統手機之間的應用軟體互不兼容,而相同系統的手機軟體基本通用,使用起來相當的便利。因為可以安裝第三方軟體,所以智能手機有豐富的擴展功能。
智能手機的誕生,是掌上電腦演變而來的。最早的掌上電腦並不具備手機通話功能,但是隨著用戶對於掌上電腦的個人信息處理方面功能的依賴的提升,又不習慣於隨時都攜帶手機和PPC兩個設備,所以廠商將掌上電腦的系統移植到了手機中,於是才出現了智能手機這個概念。
智能手機比傳統的手機具有更多的綜合性處理能力功能,比如Symbian操作系統的S60系列,Symbian的S60,Symbian3,以及一些MeeGo操作系統的智能手機。然而,就新近的發展來看,這些智能手機的類型有相融合的趨勢。
智能手機同傳統手機外觀和操作方式類似,不僅包含觸摸屏也包含非觸摸屏數字鍵盤手機和全尺寸鍵盤操作的手機。但是傳統手機都使用的是生產廠商自行開發的封閉式操作系統,所能實現的功能非常有限,不具備智能手機的擴展性。