【发布时间】:2015-08-28 11:19:29
【问题描述】:
我正在尝试以编程方式连接到另一个网络。为了测试,我使用 nexus 7 和 android 5.1.1。我在这里展示部分代码,即更改网络的代码:
final String qu = "\"";
final String MC_SSID = qu + SSID + qu;
final String MC_PASS = qu + "mypass" + qu;
Log.d(TAG,"Conecting to " + MC_SSID + " : " + MC_PASS);
WifiConfiguration conf = new WifiConfiguration();
conf.SSID = MC_SSID;
conf.preSharedKey = MC_PASS;
WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
wifiManager.addNetwork(conf);
List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
for( WifiConfiguration i : list ) {
Log.d(TAG,"WifiConf -> " + i.SSID);
if(i.SSID != null && i.SSID.equals(MC_SSID)) {
Log.d(TAG,"I\'m going to connect to " + i.SSID);
wifiManager.disconnect();
wifiManager.enableNetwork(i.networkId, true);
wifiManager.reconnect();
break;
}
}
到这里一切正常,我看到顶部的 WiFi 图标消失了,但是当再次连接时,网络是最后一个网络,而不是 wifiManager 上配置的网络。
在另一项测试中,我使用了另一家公司的不同平板电脑,它运行良好。
日志输出:
08-28 13:00:45.174 25525-27323/com.urbanclouds.airsenseiv4 D/UpdateInformation﹕ Conecting to "My-SSID" : "mypass"
08-28 13:00:45.269 25525-27323/com.urbanclouds.airsenseiv4 D/UpdateInformation﹕ WifiConf -> "My-SSID"
08-28 13:00:45.269 25525-27323/com.urbanclouds.airsenseiv4 D/UpdateInformation﹕ I\'m going to connect to My-SSID
看来一切都很好。
我在一个外部线程上执行这段代码,我不知道这是否会影响。
我做了一个应用程序来测试我是否做错了,该应用程序运行良好,并且更改效果很好。唯一的区别是在 ListView 内的 OnClickListener 上执行:
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if ( adapter.getItem(position) != null) {
final String qu = "\"";
final String MC_SSID = qu + adapter.getItem(position) + qu;
final String MC_PASS = qu + "mypass" + qu;
Log.d(TAG,"Conecting to " + MC_SSID);
WifiConfiguration conf = new WifiConfiguration();
conf.SSID = MC_SSID;
conf.preSharedKey = MC_PASS;
WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
wifiManager.addNetwork(conf);
List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
for( WifiConfiguration i : list ) {
Log.d(TAG,"WifiConf -> " + i.SSID);
if(i.SSID != null && i.SSID.equals(MC_SSID)) {
Log.d(TAG,"Voy ha realizar la reconexion");
wifiManager.disconnect();
wifiManager.enableNetwork(i.networkId, true);
wifiManager.reconnect();
break;
}
}
}
}
谁能告诉我为什么会这样? Nexus 7 的一些配置?我该如何解决?
编辑:如有必要,我可以发布保留代码,但它有点广泛。
【问题讨论】:
标签: java android android-wifi