- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我使用了下面的代码,但它运行良好,但几个月后我得到的结果是 any 而不是 BSSID 值。这是我的代码。请指导我任何其他替代方式。
@SuppressLint("LongLogTag")
public void loadWifiAvailableList() {
WifiManager wifiMan = (WifiManager) getApplicationContext().getSystemService(
Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiMan.getConnectionInfo();
String macAddr = wifiInfo.getMacAddress();
String bssid = wifiInfo.getBSSID();
//here i am getting the proper bssid
Log.d("bssid from get connection info",bssid);
List<WifiConfiguration> list = wifiMan.getConfiguredNetworks();
for( WifiConfiguration i : list ) {
if(i.BSSID!=null)
//here i am getting any from i.BSSID
Log.d("bssid from get configured network",i.BSSID);
}
}
最佳答案
我也遇到了同样的问题。我在广播接收器的帮助下解决了它,并围绕它构建了我自己的逻辑。
Broadcast Receiver 类,确保在 list 中提供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
* <p>
* {@code <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />},
* {@code <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />}</p>
*/
@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<ScanResult> 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<ScanResult> scanResults);
}
}
广播类的用户实现广播接收器类接口(interface),即OnWifiResultArrived
WifiChecker checker = new WifiChecker(this);
checker.addListerForWifiCallback(this);
@Override
public void isInWifiRange(List<ScanResult> 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<ScanResult> scanResults){
//get your BSSID here
scanResults.get(position).BSSID;
//write your logic for checking weather it is connected or not
});
关于android - 如何获取所有已连接网络的 BSSID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51472789/
如何在不连接路由器的情况下获取路由器的 BSSID 以区分重复的 SSID? 路由器是否广播 BSSID? 最佳答案 应用命令 netsh wlan show all Windows 中的 将显示所有
我想知道如何使用wireshark捕获特定无线网络的数据包。 我已经能够在监控模式下捕获不同网络的所有数据包,但对于特定分析,我需要在捕获过程中丢弃与我的网络无关的所有数据包。 我知道存在显示过滤器可
我运行以下命令来检索 BSSID 列表: netsh wlan show networks mode=Bssid | findstr "SSID" 我得到了这个: SSID 1 : John
我使用了下面的代码,但它运行良好,但几个月后我得到的结果是 any 而不是 BSSID 值。这是我的代码。请指导我任何其他替代方式。 @SuppressLint("LongLogTag") publ
大家好,我需要在装有 iOS 12 和 SWIFT 的 iPhone 上获取 wifi 网络的 BSSID。我测试了这样的东西 func getWiFiSsid() -> String? { if l
如何从 Android/iOS 应用程序检索附近 WiFi 网络(不是本地设备)的 BSSID/mac 地址和强度?此应用程序是使用 Titanium 构建的。 Titanium.Platform 为
当我为 android 设备配置并充当热点(wifi 接入点)时,我如何获取当前 Activity 热点的其他设备看到的当前(可能为热点的每次激活生成和唯一)BSSID。不是 SSID,而是 BSSI
是否可以检测同一网络中具有相同 SSID 的 BSSID 变化?因此,当您的手机切换到另一个接入点时,它会触发一个广播接收器。 最佳答案 是的,这是可能的。 创建一个 BroadcastReceive
这个问题在这里已经有了答案: WiFiManager - stumbler (1 个回答) 关闭 7 年前。 我的 iPhone 通过 WiFi 连接到接入点。现在有人知道我如何使用 Objecti
我不明白 MAC 地址和 BSSID 的区别。 我知道 MAC 是本地网络的标识符,但是当我在 wiki 上搜索 BSSID 时,我得到了这个: In an infrastructure BSS, t
我正在创建一个 Android 应用程序,它允许您连接到具有特定 BSSID 的 WiFi。我已经实现了扫描所有 wifi 并根据 WiFi 网络安全类型进行 WiFi 配置的部分。我还使用特定的 B
攻击开始时在终端中写入此命令,但当我在脚本中写入相同的命令时,就会出错。 无效的 BSSID(AP MAC 地址)。 “aireplay-ng --help”寻求帮助。 def deauth(mac
当我使用 getConfiguredNetworks() 获取 BSSID 值时,它没有给我任何信息。我得到了除 BSSID 之外的所有其他值。谁能告诉我为什么会这样?是的,我收到的网络有各自的 BS
我需要获取我的iphone 应用程序的wifi 的bssid 以确定它是否已连接。我该怎么做? 需要一些关于如何操作的指导。 最佳答案 下面的答案是从这个 answer 复制的。 在 iOS 4.1+
如何使用 C# 获取我的系统连接到的无线接入点的 BSSID/MAC(媒体访问控制)地址? 请注意,我对 WAP 的 BSSID 很感兴趣。这与 WAP 网络部分的 MAC 地址不同。 最佳答案 以下
如何在 Android 和 iOS 手机上的 Unity 游戏应用程序中获取 BSSID(我正在连接的 wifi 路由器的 MAC 地址,而不是我的设备 MAC 地址)? 我试过这些方法,但都没有用。
我得到了这段代码,我想扫描网络,然后将其全部写入 ListView 。但问题是 ssid 和 bssid 不显示。显示其他所有内容,但不显示 ssid。 还有什么是每秒更新 ListView 以便您可
假设有人在咖啡店里无线连接到互联网,并向 johnsveryownserver.com 发送 HTTP 请求。服务器端,有什么方法可以确定它们所连接的无线接入点的 MAC 地址吗? (请注意,我对他们
我目前正在使用 kali Linux 2.0 开发 bash 脚本项目。我的脚本基本上扫描网络,当它找到一个网络时,它应该以某种方式将其 ESSID、BSSID 和 channel 存储在一起。然后它
使用 Getting essid via ioctl in ruby作为模板,我想获取 BSSID 而不是 ESSID。但是,不是 C 开发人员,有一些事情我不明白。 到目前为止,我所拥有的不有效:(
我是一名优秀的程序员,十分优秀!