WifiManager addNetwork在Marshmallow中返回-1

时间:2017-03-03 10:42:59

标签: android android-6.0-marshmallow android-wifi

在我的应用程序中,我想连接到特定的wifi连接。我的应用程序工作正常,直到版本19.当安装应用程序android 6.0时,addNetwork总是返回" -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(TAG, "Created new network configuration, ID: " + newId + ", Config: " + config);


    return newId;
}

由于上面的方法返回-1,当我调用boolean isEnabled = wifiManager.enableNetwork(id, true);时,应用程序被触发。

任何人都面临同样的问题?

2 个答案:

答案 0 :(得分:3)

如果network id为-1,则从已存在的已配置网络中读取网络ID。如果它在网络列表中可用,则返回id。

JSON

答案 1 :(得分:1)

您尝试连接的Wifi网络是否由其他应用配置?您可以尝试从“设置”中忘记Wifi网络,然后尝试。

请参阅Marshmallow发行说明。这里有一个变化,如果你的应用程序没有配置Wifi,那么它就无法修改。