2016-03-06 3 views
-1

Я пытаюсь подключиться к HotSpot, созданному на другом устройстве, с помощью класса WifiManager. Я прошел через и использовал код из этого answer. Так, наконец, мой код выглядит следующим образом:Невозможно подключиться к сети WIFI

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. Повторная попытка несколько раз дает мне правильный адрес, и после этого все идет гладко. Любая идея, почему эта проблема возникает?

Заранее спасибо.

ответ

0

Просто зарегистрируйте широковещательный приемник для WifiManager.NETWORK_STATE_CHANGED_ACTION и дождитесь события CONNECTED.

IntentFilter intentfilterState = (IntentFilter)new IntentFilter(); 
intentfilterState.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); 

BroadcastReceiver nsca = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      //your code goes here 
     } 
} 

_context.registerReceiver(nsca, intentfilterState); 
Смежные вопросы