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

时间:2019-04-22 21:45:14

标签: android

我想拥有自己的设备Wi-Fi SSIDBSSID name。 我怎么能得到这个? 我尝试过了

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

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

2 个答案:

答案 0 :(得分:0)

添加这些权限

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

然后使用此方法

public static String getBSSID(Context mContext) {
    ConnectivityManager mConnectivityManager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo mNetworkInfo = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    if(mNetworkInfo.isConnected()) {
        final WifiManager mWifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
        final WifiInfo mWifiInfo = mWifiManager.getConnectionInfo();
        if(mWifiInfo != null) {
            return mWifiInfo.getBSSID();
        }
    }
    return null;
}

答案 1 :(得分:0)

如果要获取设备的热点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开始,由于this,您还需要位置权限(ACCESS_COARSE_LOCATION)才能访问SSID或BSSID,而且,我认为您需要知道设备的位置即使您具有位置权限,也要启用此设置才能正常工作。