1

以下のコードで WPA2 PSK である SSID に接続しようとしています。

             WifiConfiguration conf = new WifiConfiguration();

             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                   conf.SSID =bed_ssid_name;  
          } else {
             conf.SSID = "\"" + bed_ssid_name + "\"";  
          }
             conf.preSharedKey = "\""+ networkPass +"\"";
             wifi.addNetwork(conf);

             List<WifiConfiguration>    list = null;

             list = wifi.getConfiguredNetworks();   
             //wifi.disconnect(); 

             //wifi.disconnect();
             for( WifiConfiguration i : list ) {
                   if(i.SSID != null && i.SSID.equals("\"" + bed_ssid_name + "\"")) {
                          System.out.println("!!!!!!!### several ssid  "+i.SSID +"     ssid     "+"\""+bed_ssid_name+"\"");

                          wifi.enableNetwork(i.networkId, true);
                          break;
                   }                
             }          
             wifi.reconnect(); 

上記のコードは KitKat まで正常に動作しています。しかし、Lollipop で矛盾の問題に直面しています。Goggle nexus および Motorola 第 2 世代では、接続されていない場合もあれば、正常に接続されている場合もありますが、しばらくすると自然に切断されます。次に、いくつかのGoogleの後、私たちが与える必要があるいくつかの許可を見つけたので、これを行いました

         public void addWifiConfig(String ssid,String password) {
                //  Log.d(TAG, "Inside addWifiConfig...");
                  if (ssid == null) {
                      throw new IllegalArgumentException(
                              "Required parameters can not be NULL #");
                  }

                  String wifiName = ssid;
                  WifiConfiguration conf = new WifiConfiguration();
                  // On devices with version Kitkat and below, We need to send SSID name
                  // with double quotes. On devices with version Lollipop, We need to send
                  // SSID name without double quotes
                  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                      conf.SSID = wifiName;
                  } else {
                      conf.SSID = Constants.BACKSLASH + wifiName + Constants.BACKSLASH;
                  }
               conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
//           conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);

               conf.status = WifiConfiguration.Status.ENABLED;        
              // conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
               conf.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
               conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
               //conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
               conf.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
               conf.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
                  int newNetworkId = wifi.addNetwork(conf);
                  wifi.enableNetwork(newNetworkId, true);
                  wifi.saveConfiguration();
                  wifi.setWifiEnabled(true);
              }

しかし、まだ同じ問題です。この問題を取り除いてください。私がここに欠けているもの。

4

0 に答える 0