如何从一个wifi网络切换到另一个android
我正在学习WifiManager,WifiConfiguration APIs。
我想实现的是我想连接到特定的网络。
这是我的主要任务,连接到特定网络,但是如果我的设备已连接到某个其他网络,我想从网络切换到我的SPECIFIC NETWORK。
这里是片断如何从一个wifi网络切换到另一个android
int networkId ;
WifiConfiguration wc = new WifiConfiguration();
wc.SSID = "ABCDEFG";
wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
wifiManager = (WifiManager)getApplicationContext().getSystemService(Context.WIFI_SERVICE);
Log.d("Rohit", "Adding wifi config");
networkId = wifiManager.addNetwork(wc);
Log.d("Rohit", "Config added\ndisconnecting\nid = "+networkId);
wifiManager.disconnect();
Log.d("Rohit", "Disconnected\nNetwork enabling");
wifiManager.enableNetwork(networkId, true);
Log.d("Rohit", "enabled\n reconnecting....");
wifiManager.reconnect();
Log.d("Rohit","connected");
这里是调试输出
04-08 19:57:49.690 3326-3326/com.example.illuminati.services d /罗希特夏尔:增加无线配置 04-08 19:57:49.964 3326-3326/com.example.illuminati.services D/Rohit:Config added 04-08 19:57:49.964 3326-3326/com.example.illuminati.services D/Rohit:断开连接 04-08 19:57:49.964 3326-3326/com.example.illuminati.services D/Rohit:id = 64 04-08 19:57:49.964 3326-3326/co m.example.illuminati.services D/Rohit:Disconnected 04-08 19:57:49.964 3326-3326/com.example.illuminati.services D/Rohit:Network enabled 04-08 19:57:50.087 3326-3326 /com.example.illuminati.services D/Rohit:启用 04-08 19:57:50.087 3326-3326/com.example.illuminati.services D/Rohit:重新连接... 04-08 19:57: 50.089 3326-3326/com.example.illuminati.services d /罗希特夏尔:连接
如果设备没有连接到它连接到特定网络 任何网络但是,如果它是连接到其它网络被重新连接再次到同一个网络。
我在这里错过了什么?
我在*中发现了一个类似的问题,但这并没有帮助。
任何帮助,将不胜感激:)
好经过30-40分钟的测试这为我工作了。
我创建了一个单独的方法来禁用当前活动的网络。
但有一点我不明白,在wifiManager.enableNetwork(networkId,true);第二个参数是disableOthers。
所以,如果我使用wifiManager.enableNetwork(networkId,true); ,它应该做我的分开方法完成的技巧。
想法请问?
这里是更新的代码
int networkId ;
wifiConfig = getWifiConfig();
wifiManager = (WifiManager)getApplicationContext().getSystemService(Context.WIFI_SERVICE);
// if(wifiManager.)
WifiInfo info = wifiManager.getConnectionInfo();
Log.d("Rohit", "current ssid "+info.getSSID());
boolean disable =disableCurrent(info.getSSID());
// Log.d("Rohit","disabled ?"+disable);
Log.d("Rohit", "Adding wifi config");
networkId = wifiManager.addNetwork(wifiConfig);
//wifiManager.enableNetwork(networkId, true);
wifiManager.disconnect();
Log.d("Rohit", "Config added\ndisconnecting\nid = " + networkId);
wifiManager.enableNetwork(networkId, true);
Log.d("Rohit", "Disconnected\nNetwork enabling");
Log.d("Rohit", "enabled\n reconnecting....");
wifiManager.reconnect();
Log.d("Rohit", "connected");
这里是单独的方法
public boolean disableCurrent(String ssid)
{
List<WifiConfiguration> configuredNetworks = wifiManager.getConfiguredNetworks();
for(WifiConfiguration conf : configuredNetworks)
{
Log.d("Rohit","List "+conf.SSID);
if(conf.SSID.equals(ssid)) {
Log.d("Rohit","Inside");
wifiManager.disableNetwork(conf.networkId);
return true;
}
}
return false;
}