如何在 Android API 级别 29 (>= 29) 及以上以编程方式断开和忘记 Wi-fi 网络

问题描述

试图断开连接并忘记 使用 API level 29 >= 通过应用程序连接的 WIFI 网络,如下所示:

// Connect to wifi
WifiNetworkSpecifier specifier = new WifiNetworkSpecifier.Builder()
    .setSsid("my_hotspot")
    .setWpa2Passphrase("secret_password")
    .build();

NetworkRequest request = new NetworkRequest.Builder()
     .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) // we want WiFi
     .setNetworkSpecifier(specifier) // we want _our_ network
     .build();
                
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
                
connectivityManager.requestNetwork(request,networkCallback);


这有效。

但是我无法断开与此网络的连接。 已弃用的 removeNetwork() 方法的文档含糊地提到我应该使用 removeNetworkSuggestions - link

但是如果我尝试只删除建议,我会收到关于没有任何建议的错误(这是有道理的) 如果我尝试在连接期间将我的热点添加为建议,它会成功删除,但该过程不会断开设备与热点的连接。

有没有办法在 API 级别 29 中实现与 wifi 的断开连接?

如果有,怎么办?

注意:很乐意将目标 apk 降级到 API 级别 28,但自 2020 年 11 月起,Google Play 仅接受 API 级别 29+ link

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)