Я преобразовал код Java здесь и нашел следующее решение, которое, кажется, работает, любезно, посмотрите и дайте мне знать, работает ли оно для вас.
Добавьте класс Callback, который наследуется от WifiManager.LocalOnlyHotspotCallback
, и передайте Activity в моем случае это MainActivity.
public class OreoWifiManagerCallback : WifiManager.LocalOnlyHotspotCallback
{
private const string TAG = nameof(OreoWifiManagerCallback);
private MainActivity mainActivity;
public OreoWifiManager(Activity _activity)
{
if (_activity.GetType() == typeof(MainActivity))
mainActivity = (MainActivity)_activity;
}
public override void OnStarted(WifiManager.LocalOnlyHotspotReservation reservation)
{
base.OnStarted(reservation);
Log.Debug(TAG, "Wifi Hotspot is on now");
mainActivity.mReservation = reservation;
}
public override void OnFailed([GeneratedEnum] LocalOnlyHotspotCallbackErrorCode reason)
{
base.OnFailed(reason);
Log.Debug(TAG, "onStopped: ");
}
public override void OnStopped()
{
base.OnStopped();
Log.Debug(TAG, "onFailed: ");
}
}
Затем добавьте свойство в MainActivity, чтобы отслеживать резервирование
public WifiManager.LocalOnlyHotspotReservation mReservation { get; set; }
А затем используйте эти методы, чтобы включить или отключить Wi-Fi в этом упражнении, также обратите внимание, что при необходимости вы можете иметь глобальное поле для Wi-Fi Manager.
private void TurnOnHotspot()
{
var WifiManager = (WifiManager)this.Application.GetSystemService(Android.Content.Context.WifiService);
WifiManager.StartLocalOnlyHotspot(new OreoWifiManagerCallback(this), new Handler());
}
private void TurnOffHotspot()
{
if (mReservation != null)
{
mReservation.Close();
}
}
Удачи
Не стесняйтесь вернуться в любое время