2

我正在尝试连接到 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 连接。它只是为了在应用程序在内存中时强制连接特定应用程序(至少这是我对它的理解)。

4

1 回答 1

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 建议 API

于 2020-09-30T11:00:45.953 回答