【问题标题】:WifiManager.getConfiguredNetworks always returns empty listWifiManager.getConfiguredNetworks 总是返回空列表
【发布时间】:2014-03-23 14:44:19
【问题描述】:

我正在尝试连接到开放的 wifi 网络。当我打开我的应用程序时,它应该打开 wifi 并连接到如下定义的网络。问题是WifiManager.getConfiguredNetworks 总是返回一个空列表。我也尝试过使用锁,但没有成功。

WifiConfiguration conf = new WifiConfiguration();
conf.SSID = "\"" + networkSSID + "\"";
conf.status = WifiConfiguration.Status.ENABLED;        
conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
conf.priority = Integer.MAX_VALUE;

WifiManager wifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE); 
wifiManager.setWifiEnabled(true);   
wifiManager.addNetwork(conf);


List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
if(list.isEmpty()) 
{
    Log.e("Connection Setup","Empty list returned");
}

for( WifiConfiguration i : list ) {
    if(i.SSID != null && i.SSID.equals("\"" + networkSSID + "\"")) {
    Log.e("Connection Setup",i.SSID+" connrction attempted");
    wifiManager.disconnect();
    wifiManager.enableNetwork(i.networkId, true);
    wifiManager.reconnect();               
    break;
 }           
}

我一直在尝试更多的东西 - 如果我让这个线程休眠大约 10 秒左右 - 一切正常 - 但有更好的选择吗?

【问题讨论】:

  • 您是否尝试过不带 SSID、状态和优先级?那它看到了吗?
  • @bluewhite 我想我至少需要 SSID,我试过没有其他两个但它仍然不起作用:/

标签: android wifi android-wifi


【解决方案1】:

你不能继续了

CMD wifiManager.getConfiguredNetworks()

直到 WiFi 状态完全启用。要启用 WiFi,它需要一些时间。所以你需要延迟一些时间。

【讨论】:

    【解决方案2】:

    尝试在你的代码中注释这些行。你看到结果集有什么变化吗?

    wifiManager.setWifiEnabled(true);   
    wifiManager.addNetwork(conf);
    

    您可能想检查 wifiManager.addNetwork(conf); 的返回值,它是否返回 -1。

    对我来说,这行只返回 31 个对象。不知道为什么。。仍在寻找它。

    WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    List<WifiConfiguration> arraylist = wifiManager.getConfiguredNetworks();
    Log.wtf("WifiPreference","No of Networks"+arraylist.size());
    

    【讨论】:

      【解决方案3】:

      不幸的是我也遇到了这个问题。

      搜索了一段时间,觉得是bug。

      这是getConfiguredNetworks的android实现

      public List<WifiConfiguration> getConfiguredNetworks() {
          try {
              return mService.getConfiguredNetworks();
          } catch (RemoteException e) {
              return null;
          }
      }
      

      很明显,如果运行时发生RemoteException,该函数将返回null。到现在我也很苦恼,没能得到一些积分来解决这个问题。

      更多信息: https://code.google.com/p/android/issues/detail?id=19078

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-03
        • 1970-01-01
        • 1970-01-01
        • 2017-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-03
        相关资源
        最近更新 更多