導航:首頁 > 操作系統 > android獲取wifi狀態

android獲取wifi狀態

發布時間:2025-03-25 16:22:06

『壹』 【android初級】如何正確獲取WiFi列表

獲取Android設備上的WiFi列表是一項常見的需求,但實現過程中需注意正確的步驟和方法。以下為簡化版步驟,確保能獲取到最新且准確的WiFi列表信息。

本地環境設定如下:

Android Studio版本:3.0.1;DEMO APK的Min SDK Version為API 23,Target SDK Version為API 24,Compile SDK Version為API 26;真機運行於Android 7.0系統。

獲取WiFi列表的完整流程:

1. 開啟WiFi並激活定位服務,確保設備能被正確識別和使用。

2. 在`onCreate`方法中動態申請`ACCESS_FINE_LOCATION`許可權,以獲取定位信息。

3. 同樣在`onCreate`內注冊廣播接收器,以便在定位服務改變時接收通知。

4. 定義`mReceiver`類,並在布局文件中加入一個`Button`,以便觸發WiFi掃描。

5. 在`AndroidManifest.xml`文件中聲明`ACCESS_FINE_LOCATION`許可權。

值得注意的是,申請許可權的操作可能在`onCreate`中重復進行,這是因為Android系統可能在運行時才對應用許可權進行檢查,確保應用僅在實際需要時請求許可權,而非僅在編譯時聲明。

實現過程中的常見誤區:

一些開發者可能會在調用`startScan`方法後立刻調用`getScanResults`獲取結果,但這會得到上一次掃描的WiFi列表,而非最新的信息。正確的做法是在接收器的`onReceive`方法中處理並獲取掃描結果。

在實現過程中遇到任何問題或有不同見解,歡迎與我一起探討,共享解決方案。

『貳』 android 判斷wifi是否打開

//獲取系統服務
ConnectivityManager manager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
//獲取狀態
State wifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
//判斷wifi已連接的條件
if(wifi == State.CONNECTED||wifi==State.CONNECTING)
希望我的回答能幫助到你,滿意請採納,謝謝!

『叄』 如何使用應用助手for Android的WiFi連接

在使用應用助手for Android進行WiFi連接時,首先需要確保手機端已經成功連接到無線路由器,即手機網路處於WiFi模式。為了實現跨設備的WiFi連接,電腦也需要連接到同一個無線路由器,確保手機和電腦處於同一網段,這有助於保證兩者之間的通信順暢。

接著,需要在手機端啟動「應用助手for Android」應用。打開應用後,找到並點擊「開始WiFi連接」選項。此時,應用會生成一個驗證碼,這個驗證碼是連接過程中的關鍵信息,用於驗證手機與電腦之間的連接。

在電腦端,用戶需要在相應的WiFi連接設置中輸入手機端生成的驗證碼。這個驗證碼的具體位置因電腦操作系統的不同而有所差異。以Windows系統為例,用戶可以在網路設置中的WiFi選項下,找到當前連接的WiFi網路,並輸入驗證碼完成連接。

值得注意的是,為了確保連接過程的安全性和可靠性,用戶應當注意保護好驗證碼信息,避免泄露給他人。連接完成後,電腦和手機將建立穩定的WiFi連接,可以實現文件傳輸、遠程式控制制等多種功能。

此外,如果在連接過程中遇到問題,用戶可以查閱應用助手for Android的幫助文檔或在線支持,獲取進一步的指導。通過這種方式,用戶可以更輕松地解決連接中遇到的各種問題,確保設備之間的順利連接。

『肆』 如何獲取Android系統的wifi MAC和有線MAC

查看安卓/Android系統手機Mac地址步驟如下:

1、在主屏幕上輕按「設置」按鈕。或者,按下物理按鈕「Menu」,選擇「設置」。

2、在設置的列表下,選擇「關於本機」按鈕。

3、然後,選擇「狀態消息」按鈕。

4、查看「Wi-Fi MAC 地址」即可看到安卓手機的Mac地址。

『伍』 android manager wifi 怎麼用

獲取Wifi的控制類WifiManager。
WifiManager wm=(WifiManager)getSystemService(Context.WIFI_SERVICE);
接下來可以對wifi操作了,比如要打開、關閉wifi,可以通過WifiManager的setWifiEnabled()方法來開關wifi。
若要查看一些信息,可以通過getConnectionInfo()方法得到WifiInfo類的對象,WifiInfo類里主要提供手機wifi上面存儲的連接信息。
WifiInfo類方法:
1、getBSSID() 獲取接入點的mac地址(String)
2、getIpAddress() 獲取本機的IP地址 (int)
3、getLinkSpeed() 獲取連接速度(不是下載速度),單位為Mbps (int)
4、getMacAddress() 獲取mac地址 (String)
5、getNetworkId() 獲取網路id號。每一個設定好了的網路都有一個獨一無二的整數型ID號,用來識別網路,當操作請求時(翻譯)。簡而言之,就是這個號就是代表一個連接點,手機可以通過wifi連接很多無線網的。
6、getRssi() 返回收到的信號強度,是個負數。(好像到-113就表示一點信號都沒有,也就是說數越大信號就越好)
7、getSSID() 獲取無線信號提供者的名稱 (就是要連的網路的名字)(String)
上面那個類只能查到本機的mac地址與ip,要只查看本機的詳細信息,可以通過這個類:DhcpInfo df=wm.getDhcpInfo();
DhcpInfo類沒什麼方法,提供了一些欄位:
1、dns1 第一個DNS
2、dns2 如上
3、gateway 網關
4、ipAddress IP地址
5、netmask 子網掩碼
6、serverAddress 服務端地址(其實就是路由器ip,和網關一樣)
7、leaseDuration 和上面的getLinkSpeed() 方法的值接近,可能是連接速度,不過單位不是Mbps,getLinkSpeed() 得到72,這個欄位的值是7200

上面的IP與網關、子網掩碼等都是int型數值,直接看看不懂,附上一個我寫的方法把int轉成String類型。

private String intToString(int a){
StringBuffer sb=new StringBuffer();
int b=(a>>0)&0xff;
sb.append(b+".");
b=(a>>8)&0xff;
sb.append(b+".");
b=(a>>16)&0xff;
sb.append(b+".");
b=(a>>24)&0xff;
sb.append(b);
return sb.toString();
}

WifiConfiguration 類主要提供一個wifi配置的所有信息
有如下欄位(自己明白的不一定正確):
BSSID 接入點的mac地址。
SSID 接入點的名字。
networkId 網路號
preSharedKey WPA-PSK密碼,如果有就會得到一個*(這玩意就是判斷是不是有密碼的)
priority 優先順序
status 連接狀態,值是WifiConfiguration.Status中欄位的一種。

WifiConfiguration.Status 提供了3個欄位表示wifi連接的三種狀態
1.CURRENT 值為0,表示處於連接狀態
2.DISABLED 值為1,表示網路不可用
3. ENABLED 值為2,表示網路可用但沒連接

ScanResult wifi掃描到的接入點信息
1.BSSID
2.SSID
3.capabilities
4.frequency
5.level

關於接收WIFI狀態改變接收廣播信息:

ACTION: WifiManager.WIFI_STATE_CHANGED_ACTION ( "android.net.wifi.WIFI_STATE_CHANGED")wifi狀態變化觸發,觸發兩次。

可接收兩個信息:(鍵) (這個是監聽wifi狀態變化的,wifi狀態變化並不包括wifi的連接狀態,只是單純的指示wifi的5種狀態)

1. WifiManager.EXTRA_PREVIOUS_WIFI_STATE("previous_wifi_state") int型值 intent.getIntExtra("鍵",0);(第二個為得不到時的默認值)

2. WifiManager.EXTRA_WIFI_STATE("wifi_state") int型值 intent.getIntExtra("鍵",0);(第二個為得不到時的默認值)

ACTION: WifiManager.NETWORK_STATE_CHANGED_ACTION("android.net.wifi.STATE_CHANGE")wifi連接網路的狀態廣播,連接過程中接收多次,在連接過程中可與獲取NetworkInfo對象,通過ni.getState()可以獲取wifi連接狀態。如果連接state處於connected狀態,可以通過WifiManager.EXTRA_WIFI_INFO得到wifiInfo對象。(不重要細節:測試時發現 下面isconnected()方法為true時,這個廣播還處於connecting狀態,再一次廣播才變成connected)

可接收兩個信息:(鍵)

1. WifiManager.EXTRA_BSSID("bssid") String類型值 intent.getStringExtra("鍵")

2. WifiManager.EXTRA_NETWORK_INFO("networkInfo") T getParcelableExtra(「鍵」)

ACTION: WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION( "android.net.wifi.supplicant.CONNECTION_CHANGE") 判斷是否WIFI打開了,變化觸發一次

可接收一個信息:(鍵)(這個應該是廣播wifi啟動狀態的,true表示連接到wifi設備,一般在wifi state處於enable時得到,false則表示斷開設備連接,wifi此時狀態為disabling。這只是指機器內的wifi連接狀態變化,與網路無關)

1. WifiManager.EXTRA_SUPPLICANT_CONNECTED("connected") boolean類型返回值 intent.getBooleanExtra(「鍵」, true)第二個是默認值

ACTION: WifiManager.SUPPLICANT_STATE_CHANGED_ACTION("android.net.wifi.supplicant.STATE_CHANGE")發送WIFI連接的過程信息,如果出錯ERROR信息才會收到。連接WIFI時觸發,觸發多次。

可接收兩個信息:(鍵)

1. WifiManager.EXTRA_NEW_STATE("newState") intent.getParcelableExtra("鍵")

2. WifiManager.EXTRA_SUPPLICANT_ERROR("supplicantError") int型值 getIntExtra(「鍵」, int)

WIFI狀態int值對應的狀態:

WifiManager.WIFI_STATE_DISABLED ==1

WifiManager.WIFI_STATE_DISABLING ==0

WifiManager. WIFI_STATE_ENABLED==3

WifiManager. WIFI_STATE_ENABLING==2

WifiManager. WIFI_STATE_UNKNOWN==4

上面的是在有wifi的環境下測的,沒在沒WIFI的環境下測,不一定準,但差不多了。測試機型HTC G17。

如果在連接WIFI的過程中(Connecting),去連接網路地址(比如http://www..com)會得到找不到地址的異常,並且在8秒左右之內(就測了一台定製機),不能連接這一地址,否則報找不到地址異常。

這個包並不判斷網路連接狀態,只是判斷wifi的各種狀態,如果需要判斷網路狀態, 在android.net包中。ConnectivityManager 。

//判斷WIFI是否連接
private boolean isConnected(Context context){
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
System.out.println(ni.getState());
System.out.println(ni.getDetailedState()+"-----");
if(ni != null && ni.getState()==State.CONNECTED)
return true;
return false;
}

private boolean isWifiConected(Context context) {
WifiManager wm = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);
List<WifiConfiguration> list = wm.getConfiguredNetworks();
Iterator<WifiConfiguration> it = list.iterator();
while (it.hasNext()) {
WifiConfiguration wc = it.next();
if (wc.status == WifiConfiguration.Status.CURRENT)
return true;
}
return false;
}//2012.11.12在4.0機器上發現這個方法一直返回false,估計我理解錯了,不要用。

WifiInfo不為空並不代表這個類裡面就存了信息,getMacAdress可能為空。

public String getMac() {
WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wi = wm.getConnectionInfo();
if(wi == null)
return null;
return wi.getMacAddress();
}

閱讀全文

與android獲取wifi狀態相關的資料

熱點內容
程序員有什麼重要的證書 瀏覽:304
零基礎學演算法第二版 瀏覽:816
在哪裡關app彈出信息 瀏覽:615
加密播放軟體提取視頻 瀏覽:351
安卓手機轉到蘋果手機用什麼軟體 瀏覽:461
taptap怎麼改吃雞國際服伺服器 瀏覽:340
鋼筋工焊接需要加密嗎 瀏覽:797
servu伺服器ip地址怎麼查看 瀏覽:901
西紅柿解壓球里裝的是什麼 瀏覽:482
多位數口演算法 瀏覽:906
收二手安卓手機測機軟體用什麼 瀏覽:648
口袋寫作app在哪裡看 瀏覽:113
長虹多屏互動安全加密怎麼取消 瀏覽:23
pdf轉換exe 瀏覽:943
把其中一位聯系人的號碼加密 瀏覽:668
無法發送信息該如何恢復伺服器 瀏覽:264
程序員在電子廠能做什麼 瀏覽:164
單片機八燈閃爍 瀏覽:527
福昕pdf顏色 瀏覽:519
金山詞霸app在哪裡 瀏覽:314