在我的应用程序中,我尝试连接一个特定的wifi访问点。但是,这将以前活动的网络设置为“禁用”。我通过调用WifiManager.enableNetwork(int netId, boolean disableOthers)来建立连接,并将disableOthers设置为true,这似乎是可靠地建立连接所必需的。因此,在再次手动启用wifi之后(例如使用电源控制小部件),设备将不会与先前配置的网络连接,这些网络在网络列表中显示为“禁用”。我试图通过使用WifiConfiguration.Status.ENABLED将以前活动的每个网络的状态设置为WifiManager来避免这种情况。
...
List<WifiConfiguration> wifis = wifiManager.getConfiguredNetworks();
...
wifiConfiguration.status = WifiConfiguration.Status.ENABLED;
wifiManager.updateNetwork(wifiConfiguration);
...
wifiManager.saveConfiguration();然而,即使saveConfiguration()返回true (成功),网络的状态字段仍然处于WifiConfiguration.Status.DISABLED状态。在操作期间,我收到以下日志消息:
03-08 16:14:26.125: W/BackupManagerService(110): dataChanged but no participant pkg='com.android.providers.settings' uid=10060我知道这个老安卓系统的错误,但不知道(即不希望)它与我的问题有关。我正在用运行2.3.6的Nexus进行测试。
编辑:刚刚意识到,通过关闭和打开显示,所有设置都恢复正常(即网络启用)。在其他设备上也有不同(正确)的行为。
发布于 2014-01-14 19:45:51
我知道这是非常古老的,但是与其更新配置中的字段,不如为每个配置再次调用enableNetwork(int, boolean)。例如:
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);
}
}
}https://stackoverflow.com/questions/9620514
复制相似问题