如何获取bssid_android – 如何获取所有连接网络的BSSID?

本文介绍如何通过创建一个BroadcastReceiver监听WiFi状态变化,以获取当前连接的WiFi网络的BSSID。首先,需要在清单文件中添加ACCESS_WIFI_STATE和CHANGE_WIFI_STATE权限,然后创建一个WifiChecker类,该类继承BroadcastReceiver并实现内部逻辑,包括启动扫描、更新UI以及处理接收到的WiFi扫描结果。最后,可以实现接口OnWifiResultArrived以在接收到WiFi扫描结果时获取BSSID。
摘要由CSDN通过智能技术生成

我也遇到了同样的问题.我在广播接收器的帮助下解决了它并围绕它构建了我自己的逻辑.

广播接收器类,确保在清单中提供权限ACCESS_WIFI_STATE和CHANGE_WIFI_STATE.

public class WifiChecker extends BroadcastReceiver {

private OnWifiResultArrived onWifiResultArrived = null;

private static boolean CAN_CALL_AGAIN = true;

private WifiManager wifiManager;

/**

* @param context context of activity.

* Remember to provide permission

*

* {@code },

* {@code }

*/

@SuppressLint("MissingPermission")

public WifiChecker(Context context) {

CAN_CALL_AGAIN = true;

wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);

context.registerReceiver(this, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));

wifiManager.startScan();

rerunAgain();

}

private void rerunAgain() {

new Handler().postDelayed(new Runnable() {

@SuppressLint("MissingPermission")

@Override

public void run() {

if (CAN_CALL_AGAIN)

wifiManager.startScan();

rerunAgain(); //rerun the broadcast again

}

}, 1000);

}

public void addListerForWifiCallback(OnWifiResultArrived onWifiResultArrived) {

this.onWifiResultArrived = onWifiResultArrived;

}

@SuppressLint("MissingPermission")

@Override

public void onReceive(Context context, Intent intent) {

updateUi(wifiManager.getScanResults());

}

private void updateUi(final List scanResults) {

try {

new Handler().postDelayed(new Runnable() {

@Override

public void run() {

try {

if (onWifiResultArrived != null)

onWifiResultArrived.isInWifiRange(scanResults);

} catch (Exception e) {

e.printStackTrace();

}

}

}, 1000);

} catch (Exception e) {

e.printStackTrace();

}

}

public void unregisterListner(Context context) {

this.onWifiResultArrived = null;

CAN_CALL_AGAIN = false;

}

public interface OnWifiResultArrived {

void isInWifiRange(List scanResults);

}

}

广播课的用户

实现广播接收器类接口,即OnWifiResultArrived

WifiChecker checker = new WifiChecker(this);

checker.addListerForWifiCallback(this);

@Override

public void isInWifiRange(List scanResults){

//get your BSSID here

scanResults.get(position).BSSID;

//write your logic for checking weather it is connected or not

}

要么

WifiChecker checker = new WifiChecker(this);

checker.addListerForWifiCallback(@Override

public void isInWifiRange(List scanResults){

//get your BSSID here

scanResults.get(position).BSSID;

//write your logic for checking weather it is connected or not

});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值