无法以编程方式连接到WIFI网络

时间:2016-03-06 07:23:31

标签: android wifi wifimanager

我一直在尝试使用WifiManager类连接到在其他设备上创建的HotSpot。我已经完成并使用了此answer中的代码。所以最后我的代码看起来像这样:

    for( ScanResult i : list ) {
        Toast.makeText(context, i.SSID, Toast.LENGTH_SHORT).show();
        if(i.SSID != null && (i.SSID.startsWith("SMSKCM877-") && i.SSID.endsWith("-MSDBP2016"))) {
            // Toast.makeText(context, "Found Match", Toast.LENGTH_SHORT);
             conf.SSID="\""+i.SSID+"\"";
             conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
             wifiManager.addNetwork(conf);
             int networkID=wifiManager.addNetwork(conf);
             wifiManager.disconnect();               
             wifiManager.enableNetwork(networkID, true);
             wifiManager.reconnect();    
             String ipStr="";
             DhcpInfo sinfo=wifiManager.getDhcpInfo();
             int ip=sinfo.serverAddress;
             ipStr =  String.format("%d.%d.%d.%d",
                             (ip & 0xff),   
                             (ip >> 8 & 0xff),             
                             (ip >> 16 & 0xff),    
                             (ip >> 24 & 0xff));
             Log.e("sg", ipStr);                                 
             Toast.makeText(context, ipStr+"", Toast.LENGTH_LONG).show();            
             startConnect s=new startConnect(ipStr,context);
             s.execute(); 
             return true;
        }           
     }

但我面临的问题是,当我第一次尝试连接时,生成的ipstr始终为0.0.0.0。重试几次会给我正确的地址,之后一切顺利。知道为什么会出现这个问题吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

只需为 WifiManager.NETWORK_STATE_CHANGED_ACTION 注册广播接收器,然后等待CONNECTED事件。

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export LD_LIBRARY_PATH