我正在构建一个连接到某个没有互联网访问权限的 WiFi 网络的应用程序,我通过该应用程序(而不是通过设置)添加了网络配置,以便我能够启用/禁用该网络。
该应用程序的工作原理如下:
1-用户按下按钮。
2-我检查WiFi是否启用,如果没有,我启用它。另外,如果手机已经连接到 WiFi 网络,我会断开它与该网络的连接并连接到我的(工作正常)。
3-我使用以下方法连接到网络(启用WiFi后):
mWifiManager.enableNetwork(networkId, true);//I have the network ID from the list of configured networks.
mWifiManager.reconnect();
Run Code Online (Sandbox Code Playgroud)
但是,如果 WiFi 最初被禁用,这似乎不起作用,WiFi 被启用但并不总是连接到我的网络,它有时会连接到其他配置的网络(如果可用)。
我尝试为我的网络提供高优先级(高于所有其他配置的网络),但没有任何区别。
在启用 WiFi 之前,我还尝试启用网络,但它不起作用。
我尝试添加一个 mWifiManager.disconnect(); 但没有变化。
mWifiManager.disonnect();
mWifiManager.enableNetwork(networkId, true);
mWifiManager.reconnect();
Run Code Online (Sandbox Code Playgroud)
所以我有一些问题:
Q1-为什么当您已经连接到 WiFi 网络时它可以工作,但如果禁用 WiFi 则不能?
Q2-是否有任何有效的方法可以强制应用程序连接到特定网络?(我正在使用 Android 7.0 API 24)。
这是我的代码:
int mID;
String mSSID;
String mPASSWORD;
public void connectToWiFi(String ssid, String key) {
mSSID = ssid;
mPASSWORD = key;
if (!mWifiManager.isWifiEnabled()) {
WifiUtils.withContext(mContext).enableWifi(this::enableResult);
//Also tried
// boolean wifiEnabled …Run Code Online (Sandbox Code Playgroud)