Nir*_*mal 8 android bssid android-wifi
我用下面的代码,但它运作良好,但一些一个月后我得到的结果作为任何不但得不到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);
    }
}
Run Code Online (Sandbox Code Playgroud)
    我已经找到了一些解决方案,为什么我在 android 中的getConfiguredNetworks() api 中收到任何或空字符串。背后的原因是,如果我们在某些情况下具有相同的 SSID 和相同的密码,它会作为任何字符串或空字符串发送。因此,当您尝试使用相同的 ssid 连接时,getConfiguredNetworks()不是正确的方法。因此,请使用getScanResults() Api 而不是getConfiguredNetworks()。经过一些自己的研究后我发现了这一点。仅当您获得具有相同 ssid 和密码的AP列表时才会出现此问题。使用扫描结果并在 wifi 配置中添加该网络,然后连接它,但此方法在API 级别 26中已弃用。所以它从 api level 26起就不起作用了。参考链接
  ///sf/answers/617294331/
        wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
        //checking the right network.
        List<ScanResult> scanresults = wifiManager.getScanResults();
        {
            for (ScanResult scanresult : scanresults) {
                Log.d("scan result1", scanresult.BSSID + "");
 }}
 WifiConfiguration conf = new WifiConfiguration();
    conf.SSID = "\"" + networkSSID + "\"";
    conf.BSSID = Bssid;
  WifiManager wifiManager = (WifiManager)getApplicationContext().getSystemService(Context.WIFI_SERVICE);
  ///this wont work from api level 26
    wifiManager.addNetwork(conf);
    List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
    for (WifiConfiguration i : list) {
        if (i.BSSID != null && i.BSSID.equals(Bssid)) {
            wifiManager.disconnect();
            wifiManager.enableNetwork(i.networkId, true);
            wifiManager.reassociate();
            Log.d("changing network", "connecting the right network");
            break;
        }
    }
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           658 次  |  
        
|   最近记录:  |