android - 如何以编程方式获取我的设备的热点 SSID 和 BSSID

标签 android

我想获取自己的设备 Wi-Fi SSIDBSSID 名称。 我怎样才能得到这个? 我试过这个

WifiManager wifiManager = (WifiManager)getApplicationContext().getSystemService(Context.WIFI_SERVICE);
WifiConfiguration wifiConfiguration = new WifiConfiguration();
System.out.println("BSSID"+wifiConfiguration.BSSID);

但是这段代码给出了我当前连接的设备的BSSID,但我想通过代码获取我自己的设备BSSID ssid? 请帮助我。

最佳答案

如果您想获取设备的热点 SSID 或 BSSID,请使用如下内容:

WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
Method[] methods = wifimanager.getClass().getDeclaredMethods();
for (Method m: methods) {           
    if (m.getName().equals("getWifiApConfiguration")) {
        WifiConfiguration config = (WifiConfiguration)m.invoke(wifimanager);
        String ssid = config.SSID;
        String bssid = config.BSSID;
    }
}

您可以使用WifiManagerWifiInfo获取设备连接的 Wifi 信息,如下所示:

WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
WifiInfo info = wifiManager.getConnectionInfo();
String ssid  = info.getSSID();
String bssid = info.getBSSID();

您需要以下权限:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

注意:自 Android 8.0 起,您还需要位置权限 (ACCESS_COARSE_LOCATION) 才能访问 SSID 或 BSSID,因为 this另外,我认为即使您拥有位置权限,您也需要打开设备的位置设置才能使其正常工作。

关于android - 如何以编程方式获取我的设备的热点 SSID 和 BSSID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55801536/

相关文章:

android - 使用 FrameLayout 作为动态壁纸

java - Android 将 Recyclerview 复选框中的值发送到数据库

android - GetLogin 类返回值

java - 退出 Fragment 后在 onSaveInstanceState 中抛出 NullPointerException

android - 从 Activity 中更新 IntentService 的数据

android - Manifest Merger Failed 错误,也是两个同步模块

Android 套接字不会通过 .connect() 函数连接,只有 new Socket()

java - 使用python从java应用程序中读取json

java - LibGDX/Google Play 服务错误

android - 水平交叉重叠图像