android - WifiConfiguration 在 Lollipop 中启用网络

标签 android android-wifi android-5.0-lollipop

我在做 Wifi 项目,有一个模块可以让用户以编程方式加入 wifi。

在 kitkat 及以下版本中它运行成功,但在 Lollipop 中它不起作用。

代码如下:

WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiConfiguration wifiConfiguration = new WifiConfiguration();
wifiConfiguration.SSID = "\"testSSID\"";
wifiConfiguration.hiddenSSID = true;
wifiConfiguration.status = WifiConfiguration.Status.ENABLED;
wifiConfiguration.allowedKeyManagement
.set(WifiConfiguration.KeyMgmt.NONE);
netId = wifiManager.addNetwork(wifiConfiguration);
Log.d("WifiPreference", "add Network returned " + netId);
boolean checkEnableWifi = wifiManager.enableNetwork(netId, true);
Log.d("WifiPreference", "enableNetwork returned " + checkEnableWifi);

我测试的设备是 nexus 5 内部版本号 LRX21O,我的代码有问题还是 Lollipop 有问题?

最佳答案

在 Lollipop 上遇到了类似的问题。

手动禁用其他网络,然后重新连接 wifi 管理器解决了这个问题。

boolean enableNework(String ssid, Context cxt) {
    boolean state = false;
    WifiManager wm = (WifiManager) cxt.getSystemService(Context.WIFI_SERVICE);
    if (wm.setWifiEnabled(true)) {
        List<WifiConfiguration> networks = wm.getConfiguredNetworks();
        Iterator<WifiConfiguration> iterator = networks.iterator();
        while (iterator.hasNext()) {
            WifiConfiguration wifiConfig = iterator.next();
            if (wifiConfig.SSID.equals(ssid))
                state = wm.enableNetwork(wifiConfig.networkId, true);
            else
                wm.disableNetwork(wifiConfig.networkId);
        }
        wm.reconnect();
    }
    return state;
}

关于android - WifiConfiguration 在 Lollipop 中启用网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26986023/

相关文章:

Android:使用 TextView 和 Button 在 LinearLayout 上单击

android - 如何在 Android Studio 中设置数据绑定(bind)的默认值?

java - 在 Fragment 中显示 RecyclerView

android - 升级到 SDK 21 - 膨胀类 android.support.v7.internal.widget.ActionBarContainer 时出错

android - 无法以编程方式配置 wifi 开放网络 android?

android - 使用 Android 5.0 时出现问题 Activity 转换为带有 ViewPager 的 Activity

android - NdefRecord 崩溃是设备相关的

android - AlarmManager 如何传递过去的警报?

Android 10 以下没有互联网的情况下,Android 会自动与 WiFi 断开连接

android - 如何在 Android 中以编程方式禁用特定 SSID 的 WiFi 自动重新连接?