我无法在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();
}
}
我看到您根据注释从my blog post复制了代码。我想您已经尝试运行我在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" />
除了缺少权限之外,您提供的代码应该可以工作,并显示如下所示的系统对话框:
根据官方Android开发人员提供的this documentation 此功能已禁用从Android 10开始。
他们建议使用新的settings panel来控制wi-fi设置。
定位到Android 10或更高版本的应用无法启用或禁用Wi-Fi。 WifiManager.setWifiEnabled()方法始终返回false。如果需要提示用户启用和禁用Wi-Fi,请使用设置面板。
很遗憾,目前没有机会通过Xamarin显示设置面板,但是我敢肯定Xamarin开发人员将在不久的将来发布此功能。