Я работаю на платформе Xamarin android и после android 10 остановилось обновление "Автоматически подключаться к wifi через код". Так что после использования android 10 код wifi через запрос работал успешно, и моя проблема после wifi Inte rnet не работает на моем телефоне. Если мы подключаемся к этой сети вручную, то все в порядке. Итак, я попробовал два решения для этого:
1) Если мы удалим эту строку RemoveCapability (NetCapability.Inte rnet), то Wi-Fi подключится успешно, но inte rnet не работает.
2) если мы добавим опцию AddCapability (NetCapability.Inte rnet), то запрос на всплывающее окно не будет получен, а Wi-Fi не подключен.
Поэтому, пожалуйста, посмотрите на это.
1) Я хочу подключиться к Wi-Fi через код в android 10, используя xamarin.
2) Часть, которую я сделал, это подключение к Wi-Fi завершена.
3) Проблема, с которой я столкнулся, после inte rnet не работает.
Если я подключаюсь к Wi-Fi вручную, тогда inte rnet работает
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;
}