连接到使用Android库的Android中的特定WiFi,当WiFi在手机中被禁用时
问题描述:
我正在开发Android应用程序,其中涉及连接特定的WiFi SSID而不使用密码。每当用户进入房屋应用程序时,都会通过BLE检测特定的信标。在该应用程序尝试连接使用WifiManager编程的应用程序代码的WiFi。 我在这里面临一些问题: 1)如果WiFi已在手机中禁用 - 应用程序启用WiFi并尝试连接到已配置的WiFi(可能是字母顺序)。在这种情况下,它可能会连接另一个可用并在手机中配置的WiFi,而不是连接到我的SSID。连接到使用Android库的Android中的特定WiFi,当WiFi在手机中被禁用时
2)如果WiFi在手机中启用:如果WiFi已启用应用程序重新连接到我的SSID是正确的。
3)WiFi禁用,我的SSID没有在手机中配置。它不会连接到WiFi。
病例1和3真的很头疼。我如何在程序正在做的,请参阅代码:
// wifi
WifiManager wifiManager= (WifiManager) getSystemService(Context.WIFI_SERVICE);
// setup a wifi configuration
WifiConfiguration wc= new WifiConfiguration();
wc.SSID = "\"mySSID\"";
wc.status = WifiConfiguration.Status.ENABLED;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {}
wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
// connect to and enable the connection
int netId = wifiManager.addNetwork(wc);
wifiManager.enableNetwork(netId, true);
wifiManager.setWifiEnabled(true);
wifiManager.reconnect();
答
您的应用程序后从BLE
- 打开检测标ON /启用WiFi,如果其关闭。
禁用除具有“Wi-Fi SSID”的网络配置之外的所有其他网络配置。您应该使用networkId来识别配置。禁用配置的API是https://developer.android.com/reference/android/net/wifi/WifiManager.html#disableNetwork(int)或者您可以禁用所有其他配置,同时启用您的网络https://developer.android.com/reference/android/net/wifi/WifiManager.html#enableNetwork()
如果可用,您将连接到您的SSID。
作为一个很乖的应用程序,你应该重新启用所有的应用程序退出之前的网络配置。
我想你认为WIFI被禁用的方式与大多数电话销售商查看“不要呼叫”列表的方式大致相同。 – Tibrogargan