在Android 10中连接到特定的wifi

时间:2020-02-12 15:04:38

标签: android wifi networkmanager

我正在尝试连接到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连接。这仅是为了在某个应用程序处于内存中时对其进行强制连接(至少是我对它的理解)。

1 个答案:

答案 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