2017-03-03 5 views
0

私のアプリケーションでは、特定の無線LAN接続に接続したいと考えています。私のアプリケーションはバージョン19までうまくいきます。アプリケーションのアンドロイド6.0をインストールすると、addNetworkは常に "-1"を返します。WifiManager addNetworkはMarshmallowで-1を返します

以下は私が使用しているコードです。

private int configureNetworkAndReturnId() { 

    WifiConfiguration config = new WifiConfiguration(); 
    config.BSSID = "xx:xx:xx:xx:xx:xx"; 
    config.SSID = "\"" + "Name" + "\""; 
    config.priority = 1; 
    config.status = WifiConfiguration.Status.ENABLED; 
    // Set connection configuration to require encryption 
    config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); 
    config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); 
    config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); 
    config.allowedProtocols.set(WifiConfiguration.Protocol.RSN); 
    config.allowedProtocols.set(WifiConfiguration.Protocol.WPA); 
    config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); 

    config.preSharedKey = "xxxx"; 

    final int newId = wifiManager.addNetwork(config); 
    Log.d("Ashok", "Created new network configuration, ID: " + newId + ", Config: " + config); 


    return newId; 
} 

iはboolean isEnabled = wifiManager.enableNetwork(id, true);アプリケーションが打たれる呼び出すと、上記の方法は-1を返すからです。

誰もが同じ問題に直面しましたか?

+0

あなたは(http://stackoverflow.com/questions/35539273/android-6-connect-to-specific-wifi-network-programmatically-not-working)[ここで説明]ソリューションを試したことがありますか? –

答えて

0

ネットワークIDが-1の場合は、既存の設定済みネットワークからネットワークIDを読み取ります。それがネットワークリストで利用可能な場合は、idを返します。

int newId = wifiManager.addNetwork(config); 
     if (newId == -1) { 
      // Get existed network id if it is already added to WiFi network 
      newId = getExistingNetworkId(SSID); 
      Log.d(TAG, "getExistingNetworkId: " + newId); 
     } 

private int getExistingNetworkId(String SSID) { 
    List<WifiConfiguration> configuredNetworks = wifiManager.getConfiguredNetworks(); 
    if (configuredNetworks != null) { 
     for (WifiConfiguration existingConfig : configuredNetworks) { 
      if (SSID.equalsIgnoreCase(existingConfig.SSID)) { 
       return existingConfig.networkId; 
      } 
     } 
    } 
    return -1; 
} 
0

接続しようとしているWifiネットワークが他のアプリケーションによって設定されていましたか?設定からWifiネットワークを忘れて、試してみてください。

マシュマロのリリースノートを参照してください。ここでWifiがあなたのアプリケーションによって設定されていない場合は変更できないという変更があります。

関連する問題