我无法在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();
}
}
答案 0 :(得分:2)
我看到您基于注释从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" />
除了缺少权限外,您提供的代码应该可以正常工作,并向您显示如下所示的系统对话框:
答案 1 :(得分:0)
这是我连接wifi的代码,但问题是连接wifi上网后无法正常工作。
如果您的互联网没有出现问题,请与我们分享您的代码:
try
{
var connectivityManager = Android.App.Application.Context.GetSystemService(Context.ConnectivityService) as ConnectivityManager;
WifiManager wifiManager = (WifiManager)Android.App.Application.Context.GetSystemService(Context.WifiService);
if (!wifiManager.IsWifiEnabled)
{
Forms.Context.StartActivity(new Intent(Android.Provider.Settings.ActionWifiSettings));
return false;
}
var callback = new NetworkCallback(connectivityManager)
{
NetworkAvailable = network =>
{
Console.WriteLine("Connected");
MessagingCenter.Send<string, Boolean>("ConnectModel", "connecttowifi", true);
},
NetworkUnavailable = () =>
{
Console.WriteLine("Not Connected");
MessagingCenter.Send<string, Boolean>("ConnectModel", "connecttowifi", false);
}
};
var specifier = new WifiNetworkSpecifier.Builder()
.SetSsid(ssid)
.SetWpa2Passphrase(password)
.Build();
var request = new NetworkRequest.Builder()
.AddTransportType(TransportType.Wifi)
//.AddCapability(NetCapability.Internet)
//.RemoveCapability(NetCapability.Internet)
.SetNetworkSpecifier(specifier)
.Build();
connectivityManager.RequestNetwork(request, callback);
return true;
}
catch (Exception e)
{
Console.Write(e.Message);
return false;
}