Я бы посоветовал вам вернуть List в ваш метод GetWifiList, чтобы интерфейс выглядел примерно так:
public interface IWifiService
{
void GetWifiList(Action<List<string>> action);
}
И тогда ваш метод GetWifiList будет выглядеть так:
public static Action<List<string>> CallBackAction;
public void GetWifiList(Action<List<string>> callBackMethod)
{
WiFiNetworks = new List<string>();
var context = Android.App.Application.Context;
wifi = (WifiManager)context.GetSystemService(Context.WifiService);
wifiReceiver = new WifiReceiver();
context.RegisterReceiver(wifiReceiver, new IntentFilter(WifiManager.ScanResultsAvailableAction));
wifi.StartScan();
CallBackAction= callBackMethod;
}
И затем в вашем методе OnRecieve вы выполняете метод обратного вызова:
public override void OnReceive(Context context, Intent intent)
{
IList<ScanResult> scanWifiNetworks = wifi.ScanResults;
foreach(ScanResult wifinetwork in scanWifiNetworks)
{
WiFiNetworks.Add(wifinetwork.Ssid);
}
CallBackAction(WiFiNetworks);
}
А теперь самая важная часть метода обратного вызова и что передать в качестве аргумента:
Система.Действие - это, по сути, ссылка на метод, где вы передаете имя метода обратного вызова, как показано ниже:
var service = DependencyService.Get<IWifiService>();
service.GetWifiList(MyCallBackAction);
Где MyCallBackAction, как показано ниже:
public void MyCallBackAction(List<string> wifiNetworks)
{
// this method will be called every time you get a callback at OnRecieve
}