首页 > 解决方案 > 在 Xamarin Forms Android 10 中以编程方式连接到 wifi

问题描述

我无法在 Android 10 中连接到 wifi。我的代码在 Android 9 之前都可以正常工作,我一直在尝试为 Android 10 实现相同的代码,但没有任何运气:(

        private void RequestNetwork(string _ssid, string _passphrase)
        {
            var specifier = new WifiNetworkSpecifier.Builder()
                .SetSsid(_ssid)
                .SetWpa2Passphrase(_passphrase)
                .Build();

            var request = new NetworkRequest.Builder()
                .AddTransportType(TransportType.Wifi) // we want WiFi
                .RemoveCapability(NetCapability.Internet) // Internet not required
                .SetNetworkSpecifier(specifier) // we want _our_ network
                .Build();

            NetworkCallback _callback = new NetworkCallback();
            connection_manager.RequestNetwork(request, _callback);
        }

        private class NetworkCallback : ConnectivityManager.NetworkCallback
        {
            public Action NetworkAvailable { get; set; }
            //bool IsBusy = false;
            public override void OnAvailable(Network network)
            {
                base.OnAvailable(network);
                connection_manager.BindProcessToNetwork(network);
            }

            public override void OnUnavailable()
            {
                base.OnUnavailable();
            }
        }

标签: c#androidxamarinxamarin.formsxamarin.android

解决方案


我看到您根据评论从我的博客文章中复制了代码。我猜你尝试过运行我在 GitHub 上提供的示例应用程序?

无论如何,首先确保您在清单中添加了以下权限:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

除了缺少权限之外,您提供的代码应该可以工作并向您显示一个如下所示的系统对话框:

安卓


推荐阅读