我正在尝试连接到android 10中的特定wifi网络。我已经有可用的凭据,并且我要添加网络建议:
val suggestion = WifiNetworkSuggestion.Builder()
.setSsid("ssid")
.setWpa2Passphrase("password")
.build()
wifiManager.removeNetworkSuggestions(mutableListOf(suggestion))
when (wifiManager.addNetworkSuggestions(mutableListOf(suggestion))) {
WifiManager.STATUS_NETWORK_SUGGESTIONS_SUCCESS -> {
networkAdded()
}
WifiManager.STATUS_NETWORK_SUGGESTIONS_ERROR_ADD_DUPLICATE -> {
networkDuplicate()
}
else -> {
networkAddFailed()
}
}
我能够看到通知(尽管只有在应用程序第一次请求此通知时,这在大多数情况下才有意义,因为它实际上是在请求许可才能提出建议网络)。但是,在我允许之后,我似乎无法连接到该网络。特别是如果我已经与其他网络建立了wifi连接。
新网络未出现在我的已保存网络列表中,如果我在wifi扫描列表中找到它,然后单击它,它将像对待新网络一样对待。
我不希望应用程序能够强制系统连接,但是我希望用户能够通过wifi设置自行完成它,而不必从头开始进行配置。
我也尝试使用ConnectivityManager强制连接,但这并没有添加实际的持久wifi连接。这仅是为了在某个应用程序处于内存中时对其进行强制连接(至少是我对它的理解)。
答案 0 :(得分:0)
我遇到了同样的问题,但是在添加了这段代码后,设备已连接到网络:
final IntentFilter intentFilter = new IntentFilter(WifiManager.ACTION_WIFI_NETWORK_SUGGESTION_POST_CONNECTION);
final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (!intent.getAction().equals(WifiManager.ACTION_WIFI_NETWORK_SUGGESTION_POST_CONNECTION)) {
return;
} else {
// Do something with success
}
}
};
context.registerReceiver(broadcastReceiver, intentFilter);
希望有帮助。您可以在以下位置找到完整的代码示例:Wi-Fi suggestion API