【发布时间】:2026-02-22 19:55:02
【问题描述】:
在我的应用程序中,我连接到具有自己的 WiFi 网络的设备。 在 android 6 及更高版本中,系统会在几秒钟后询问我是否要连接到该网络,即使没有互联网连接也是如此。 只有在批准该消息后,我才能连接到我的设备。 我尝试以编程方式连接到网络,而不是强制用户每次都去他的设置并手动连接。我使用以下代码连接到设备网络:
private void connectToWiFi(WifiManager wifiManager, String wifiName) {
WifiConfiguration configuration = new WifiConfiguration();
configuration.SSID = "\"" + wifiName + "\"";
configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
wifiManager.addNetwork(configuration);
List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
for (WifiConfiguration i : list) {
if (i.SSID != null && i.SSID.equals("\"" + wifiName + "\"")) {
wifiManager.disconnect();
wifiManager.enableNetwork(i.networkId, true);
wifiManager.reconnect();
break;
}
}
}
并且还试图强制应用使用 WiFi 连接,而不是我正在使用的蜂窝数据:
NetworkRequest.Builder builder;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
builder = new NetworkRequest.Builder();
builder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
connectivityManager.requestNetwork(builder.build(), new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
String ssid = wifiManager.getConnectionInfo().getSSID();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
connectivityManager.bindProcessToNetwork(null);
if (ssid.equals("\"" + Prefs.getWifiName(PUFMainActivity.this) + "\"")) {
connectivityManager.bindProcessToNetwork(network);
connectivityManager.unregisterNetworkCallback(this);
}
}
}
});
}
尽管只要蜂窝数据处于活动状态,设备就不会出现连接。如果我禁用蜂窝数据,那么它工作正常。 我需要知道是否有一种方法可以在不告诉用户禁用他的蜂窝数据的情况下以编程方式执行我想要的操作。
谢谢
【问题讨论】:
-
嗨@YYjo,你有这个问题的答案吗?
-
@KenRatanachaiS。不幸的是没有。据我所知,它在 android 上效果不佳。
标签: android