BroadcastReceiver監聽網路狀態

2021-07-04 12:06:34 字數 1571 閱讀 5145

想要獲取android的聯網事件

首先要 註冊receiver

<

receiver

android:name

="com.ray.ray.receiver.connectionchangereceiver"

android:label

="networkconnection"

>

<

intent-filter

>

<

action

android:name

="android.net.conn.connectivity_change"

/>

<

action

android:name

="android.intent.action.user_present"

/>

intent-filter

>

receiver

>

網路狀態發生變化的時候,系統會發出 android.net.conn.connectivity_change 廣播

手機解鎖動作的時候,系統會發出android.intent.action.user_present 廣播,我這裡為了在解鎖手機時獲取到,所以新增上手機解鎖事件廣播。

註冊receiver後,就可以在connctionchangereceiver中接收到網路狀態變化和手機解鎖動作的廣播

其次,我們處理接收到的廣播,實現方法如下,在onreceive中新增網路狀態判斷

connectivitymanager connectmgr =(connectivitymanager) context.getsystemservice(context.connectivity_service);

networkinfo mobnetinfo =connectmgr.getnetworkinfo(connectivitymanager.type_mobile);

networkinfo wifinetinfo =connectmgr.getnetworkinfo(connectivitymanager.type_wifi);

connectivitymanager 獲取當前系統服務資訊

getnetworkinfo 分別獲取 型別為mobile和wifi兩種聯網方式的資訊。

通過判斷mobnetinfo.isconnected() 和 wifinetinfo.isconnected() 返回的boolean 布林值來確定當前聯網狀態。

if (!mobnetinfo.isconnected() && !wifinetinfo.isconnected())  else

這裡只新增了當前是否連線網路,如果需要區分是資料還是wifi連線,可以分別判斷。

這裡要注意,新增android permission 訪問許可權

<

uses-permission

android:name

="android.permission.access_network_state"

/>

網路監聽 Sniffer

sniffer 嗅探器 就是利用計算機的網路介面截獲目的地為其他計算機的資料報文的一種技術。該技術被廣泛應用於網路維護和管理方面,它工作的時候就像一部被動聲納,默默的接收著來自網路的各種資訊,通過對這些資料的分析,網路管理員可以深入了解網路當前的執行狀況,以便找出所關心的網路中潛在的問題。sniff...

監聽網路狀態

using system using system.threading using system.runtime.interopservices namespace network static networkhelper public static networkhelper getnetwork...

Flutter 網路監聽

外掛程式連線 我以當前我使用版本 connectivity 0.4.2 網路監測在乙個公用的介面 import dart async 檢測網路 import package flutter services.dart 檢測網路 import package connectivity connecti...