以更“通用”的方式在 Android 10 中断开与 Wi-Fi 网络的连接

问题描述

我有一堆 Wi-Fi 设备需要连接,执行/发送一些命令,然后断开连接。

我使用 connectivityManager.RequestNetwork(myRequest,myNetworkCallback);
连接到他们 然后我执行所需的操作,并通过这样做我的应用程序导航到多个页面
一切都完成后,我想断开与设备的连接。

为了实现这一点,我需要调用 connectivityManager.UnregisterNetworkCallback(myNetworkCallback);

我的问题是我希望将 Connect() 和 disconnect() 方法作为两个独立的命令,而不必保存“myNetworkCallback”以将其传递到 disconnect() 中。

我不需要以任何方式保存网络并且我永久知道它的 Ssid。

有没有办法完全丢弃这个网络而不必将回调作为参数传递?

解决方法

如果你不想传递任何参数,你可以创建一个没有任何属性的NetworkCallback

创建ConnectivityManager

的子类
public class SubConnectivityManager : ConnectivityManager
    {
        public SubConnectivityManager(IntPtr javaReference,JniHandleOwnership transfer) : base(javaReference,transfer)
        {

        }

        public void CustomUnregisterNetworkCallback()
        {
            this.UnregisterNetworkCallback(new NetworkCallback());
        }

    }
SubConnectivityManager connectivityManager = (SubConnectivityManager)this.GetSystemService(Android.Content.Context.ConnectivityService);
connectivityManager.CustomUnregisterNetworkCallback();