java - 当手机中禁用 wifi 时,使用 Android 库连接到 Android 中的特定 wifi

标签 java android android-studio android-wifi wireless

我正在开发 Android 应用程序,该应用程序涉及无需密码即可连接特定 WiFi SSID。每当用户进入场所时,应用程序都会通过 BLE 检测特定的信标。之后,应用程序尝试使用 WifiManager 连接应用程序代码中编程的 WiFi。 我在这里面临一些问题: 1) 如果手机中已禁用 WiFi - 应用程序会启用 WiFi 并尝试连接到已配置的 WiFi(可能按字母顺序排列)。在这种情况下,它可能会连接另一个可用且在手机中配置的 WiFi,而不是连接到我的 SSID。

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 的信标后

作为一个行为良好的应用,您应该在应用退出之前重新启用所有网络配置。

关于java - 当手机中禁用 wifi 时,使用 Android 库连接到 Android 中的特定 wifi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39050022/

相关文章:

java - 不能将 PowerMockRule 与 spring 一起使用

java - Java 中用于 REST 服务的异步页面等效项

android - 带按钮的文本编辑器?

java - 从我的 WebView 中的相机或图库上传图像

android - 无法在Android Studio 2.1上启动模拟器

java - 构造函数 JSONObject(String) 是未定义错误 - 无法解析

java - 从 php 脚本解析 Json

android - 从 android 上的 IP 摄像机接收视频流

android-studio - Android Studio 可以在我 Ctrl+F4 关闭当前文件后转到上一个打开的文件吗?

unit-testing - Android Studio,assembleDebugTest导致多个dex文件定义