2017-03-17 2 views
0

J'essaie de se connecter avec un réseau Wi-Fi spécifique, mais cela ne fonctionne pas. Chaque fois que j'appelle un code ci-dessous, l'arrêt wifi déjà connecté et le téléphone montrant un wifi en mode balayage. Quelqu'un peut-il me dire pourquoi cela se passe-t-il? Voici mon code:Impossible de se connecter avec WIFI en utilisant wifiManger

String result = ""; 
    try { 
     WifiConfiguration wifiConfig = new WifiConfiguration(); 
     wifiConfig.SSID = String.format("\"%s\"", ssid); 
     WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 

     int netId = wifiManager.addNetwork(wifiConfig); 
     wifiManager.disconnect(); 
     wifiManager.enableNetwork(netId, true); 
     wifiManager.reconnect(); 
     int state = wifiManager.getWifiState(); 
     Log.i(TAG, "state: " + state); 
     WifiInfo wifiInfo = wifiManager.getConnectionInfo(); 
     String newSSID = wifiInfo.getSSID(); 
     result = "Connected"; 
    } catch (Exception e) { 
     result = "Failed"; 
     Log.e(TAG, "unable to set wifi " + ssid, e); 
    } 
+0

Est-ce un réseau ouvert ?? Si ce n'est pas le cas, vous devez également configurer d'autres configs. –

+0

ce n'est pas ouvert mais déjà enregistré dans le réseau mobile. donc je ne pense pas que j'ai besoin de donner la clé avec la configuration pour se connecter avec elle. –

Répondre

0

Je pense que vous ne devriez pas rajouter de SSID. Ce code wifiManager.addNetwork(wifiConfig) ajoute un autre profil wifi à votre appareil.

Vous devez juste au-dessous du code pour reconnecter

private boolean connectToWifi(String ssid) { 
    WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 
    List<WifiConfiguration> wifiList = wifiManager.getConfiguredNetworks(); 
    for(WifiConfiguration config : wifiList) { 
     if(config.SSID != null && config.SSID.equals("\"" + ssid + "\"")) { 
      wifiManager.disconnect(); 
      wifiManager.enableNetwork(config.networkId, true); 
      wifiManager.reconnect();    
      return true; 
     }   
    } 
    return false; 
} 
+0

ok vous avez raison. Mais je n'arrive toujours pas à me connecter. Le wifi s'éteint puis revient à son réseau précédemment connecté. Cela semble être un androïde donner une préférence à un réseau par défaut d'abord dans une liste de réseau de sauvegarde. est-ce un moyen de supprimer ce réseau par défaut et d'en ajouter un nouveau par défaut? –

+0

@ user526206 Supprimez d'abord tous les profils wifi de l'appareil, puis configurez-les à nouveau. –

+0

Merci. Bien le bon moyen est de désactiver le réseau connecté aussi comme: wifiManager.disconnect(); wifiManager.enableNetwork (config.networkId, true); wifiManager.disableNetwork (connectedNetwork); wifiManager.reconnect(); –