WifiManager.getConfiguredNetworks始终返回空列表

时间:2014-03-23 14:44:20

标签: android wifi android-wifi

我正在尝试连接到开放的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秒左右 - 一切正常 - 但是有更好的选择吗?

3 个答案:

答案 0 :(得分:1)

你无法继续

SELECT tbl.name as Table_Name,trig.name as Trigger_Name,trig.is_disabled  
FROM [sys].[triggers] as trig inner join sys.tables as tbl on 
trig.parent_id = tbl.object_id 

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

答案 1 :(得分:0)

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

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());

答案 2 :(得分:0)

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

经过一段时间的搜索,我认为这是一个错误。

这是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