首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WifiManager似乎没有提交更改

WifiManager似乎没有提交更改
EN

Stack Overflow用户
提问于 2012-03-08 15:48:04
回答 1查看 1.2K关注 0票数 1

在我的应用程序中,我尝试连接一个特定的wifi访问点。但是,这将以前活动的网络设置为“禁用”。我通过调用WifiManager.enableNetwork(int netId, boolean disableOthers)来建立连接,并将disableOthers设置为true,这似乎是可靠地建立连接所必需的。因此,在再次手动启用wifi之后(例如使用电源控制小部件),设备将不会与先前配置的网络连接,这些网络在网络列表中显示为“禁用”。我试图通过使用WifiConfiguration.Status.ENABLED将以前活动的每个网络的状态设置为WifiManager来避免这种情况。

代码语言:javascript
复制
...
List<WifiConfiguration> wifis = wifiManager.getConfiguredNetworks();
...
wifiConfiguration.status = WifiConfiguration.Status.ENABLED;
wifiManager.updateNetwork(wifiConfiguration);
...
wifiManager.saveConfiguration();

然而,即使saveConfiguration()返回true (成功),网络的状态字段仍然处于WifiConfiguration.Status.DISABLED状态。在操作期间,我收到以下日志消息:

代码语言:javascript
复制
03-08 16:14:26.125: W/BackupManagerService(110): dataChanged but no participant pkg='com.android.providers.settings' uid=10060

我知道这个老安卓系统的错误,但不知道(即不希望)它与我的问题有关。我正在用运行2.3.6的Nexus进行测试。

编辑:刚刚意识到,通过关闭和打开显示,所有设置都恢复正常(即网络启用)。在其他设备上也有不同(正确)的行为。

EN

回答 1

Stack Overflow用户

发布于 2014-01-14 19:45:51

我知道这是非常古老的,但是与其更新配置中的字段,不如为每个配置再次调用enableNetwork(int, boolean)。例如:

代码语言:javascript
复制
WifiManager mgr = (WifiManager) getSystemService(Context.WIFI_SERVICE);
List<WifiConfiguration> networks = mgr.getConfiguredNetworks();
if (networks != null) {
    for (WifiConfiguration network : networks) {
        if (WifiConfiguration.Status.DISABLED == network.status) {
            mgr.enableNetwork(network.networkId, false);
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9620514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档