Android 中監聽WIFI連線狀態變化

2021-07-29 03:51:28 字數 2288 閱讀 1372

android應用開發過程中通過註冊廣播監聽wifi狀態變化:

廣播中獲取的action為wifimanager.wifi_state_changed_action用於監聽android wifi開啟或關閉的狀態,wifimanager.network_state_changed_action用於判斷是否連線到了有效wifi(不能用於判斷是否能夠連線網際網路)。

在收到action 為wifimanager.network_state_changed_action的廣播時,通過

networkinfo networkinfo = intent.getparcelableextra(wifimanager.extra_network_info);

wifiinfo wifiinfo = intent.getparcelableextra(wifimanager.extra_wifi_info);

string bssid = intent.getstringextra(wifimanager.extra_bssid);

以上三個方法能夠獲取手機當前連線的wifi資訊,注意在wifi斷開時intent中不包含wifiinfo物件,卻包含bssid。

class networkconnectchangedreceiver extends broadcastreceiver 

}// 這個監聽wifi的連線狀態即是否連上了乙個有效無線路由,當上邊廣播的狀態是wifimanager.wifi_state_disabling,和wifi_state_disabled的時候,根本不會接到這個廣播。

// 在上邊廣播接到廣播是wifimanager.wifi_state_enabled狀態的同時也會接到這個廣播,當然剛開啟wifi肯定還沒有連線到有效的無線

if (wifimanager.network_state_changed_action.equals(action))

listconfigurednetworks = wifimanager.getconfigurednetworks();

for(wificonfiguration configuration:configurednetworks)

if(configuration.ssid

.equals(addssid))

}if(!findcfg)

wificonfiguration configuration= wifiutils.createwifiinfocfg(mscanresult.ssid,mpass,type);

l.i("新的wifi配置:"+configuration);

int newnetid = wifimanager.addnetwork(configuration);

l.i("新的netid="+newnetid);

wifimanager.enablenetwork(newnetid,true);}}

}else if(state== networkinfo.state

.connected)

l.i(ssid + "***>" + mscanresult.ssid);

l.i("總共耗時:"+((system.currenttimemillis()-start)/1000.0));

if (ssid.equals(addssid))

intent intent1 = new intent(wifiactivity2.this, mainactivity.class);

intent1.addflags(intent.flag_activity_clear_top);

startactivity(intent1);}}

}}}}

private string printbundle(bundle bundle) else

}// l.e("bundle:"+bundle);

return sb.tostring();

}}

動態註冊廣播:

private void registernetworkconnectchangereceiver()
androidmanifest新增許可權:

android:name="android.permission.access_wifi_state" />

android:name="android.permission.internet" />

android:name="android.permission.access_network_state" />

android 非root下wifi測試連線

獲取root許可權的情況 1.手機安裝無線除錯工具,adbwireless.apk 2.手機連線wifi 與電腦同區域網 開啟adbwireless.apk軟體,開啟除錯狀態,介面會顯示ip位址。3.在計算機命令列,進入sdk目錄 android sdk platform tools 輸入 adb ...

Android監聽wifi和3G廣播

package com.rudy.demo import android.content.broadcastreceiver import android.content.context import android.content.intent import android.net.connect...

Android 監聽wifi廣播的兩種方式

1.xml中宣告 2.中註冊 intentfilter filter new intentfilter filter.addaction wifimanager.network state changed action filter.addaction wifimanager.wifi state ...