我有命令在较低版本的Android上正常工作,但由于WiFi管理器更改了Android 10及以上的配置命令,我的命令不响应并给出错误,请帮助我!
connectivityManager Android 10:
WifiNetworkSuggestion guestUsers = new WifiNetworkSuggestion.Builder()
.SetSsid("########")
.SetWpa2Passphrase("#######")
.Build();
var suggestions = new[] { guestUsers };
var status = wifiManager.AddNetworkSuggestions(suggestions);
var specifier = new WifiNetworkSpecifier.Builder()
.SetSsid("##########")
.SetWpa2Passphrase("###########")
.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();
var connectivityManager = Android.App.Application.Context.GetSystemService(Context.ConnectivityService) as ConnectivityManager;
var callback = new NetworkCallback
{
NetworkAvailable = network =>
{
re = true;
}
};
connectivityManager.RequestNetwork(request, callback);
UdpClient Defult:
using (var client = new UdpClient())
{
IPEndPoint ep = new IPEndPoint(IPAddress.Parse(ipAddress), sendPort);
client.Connect(ep);
client.Send(test, test.Length);
}
错误捕获:
{System.Net.Sockets。SocketException (0x80004005): Network is unreachable .日志含义在System.Net. sockets.socket.connect[0x000b0]在/Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/System/System.Net.Sockets/Socket.cs:892System.Net. sockets.udpclient . connectIPEndPoint endPoint) [0x00033] in/Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/System/net/System/Net/Sockets/UDPClient.cs:477at SmartCube.DeviceFolder.Connection.SocketUdp () [0x00071] in}
注意:
让我再次提醒你,这个命令适用于Android 10及以下,没有问题,由于Android 10及以上的Wi-Fi管理器更新,它不起作用。
如果你的应用针对Android 10或更高版本,并且它不是一个系统应用或DPC,那么以下方法不会返回有用的数据:
-
getConfiguredNetworks()
方法总是返回一个空列表。 -
每个返回整数值的网络操作方法——
addNetwork()
和updateNetwork()
——总是返回-1。 -
每个返回布尔值的网络操作(
removeNetwork()
,reassociate()
,enableNetwork()
,disableNetwork()
,reconnect()
,disconnect()
)总是返回false
。
如果你的应用需要连接到Wi-Fi网络,使用以下替代方法:
-
要触发本地即时连接到Wi-Fi网络,请在标准
NetworkRequest
对象中使用WifiNetworkSpecifier
。 -
要添加Wi-Fi网络以考虑为用户提供互联网接入,请使用
WifiNetworkSuggestion
对象。您可以通过分别调用addNetworkSuggestions()
和removeNetworkSuggestions()
来添加和删除出现在自动连接网络选择对话框中的网络。这些方法不需要任何位置权限。