/// <summary> /// GetWifiList /// </summary> /// <returns></returns> public async Task <IList <WifiInfo> > GetWifiList() { IList <WifiInfo> networks = new List <WifiInfo>(); try { PermissionStatus status = await CrossPermissions.Current.CheckPermissionStatusAsync <LocationPermission>(); if (status != PermissionStatus.Granted) { bool shouldShow = await CrossPermissions.Current.ShouldShowRequestPermissionRationaleAsync(Permission.Location); if (shouldShow) { await WifiHelper.DisplayCustomDialog(CrossCurrentActivity.Current.Activity, "Permission needed", "You have to grant location permission to get wifi list!", "OK"); } status = await CrossPermissions.Current.RequestPermissionAsync <LocationPermission>(); } if (status == PermissionStatus.Granted) { networks = await ScanAndGetNetworks(); } } catch (Exception ex) { // Something went wrong System.Diagnostics.Debug.WriteLine($"Error when trying to get wifi list: {ex.Message}"); } return(networks); }
/// <summary> /// OnReceive /// </summary> /// <param name="context"></param> /// <param name="intent"></param> public override void OnReceive(Context context, Intent intent) { IList <ScanResult> foundedNetworks = WifiManager.ScanResults; WifiNetworks = new List <WifiInfo>(); foreach (ScanResult wifiResult in foundedNetworks) { if (string.IsNullOrEmpty(wifiResult.Ssid)) { continue; } // hidden network WifiInfo wifiInfo = WifiHelper.MakeWiFiInfo(wifiResult); if (!WifiNetworks.Contains(wifiInfo)) { bool canAdd = true; foreach (WifiInfo wifi in WifiNetworks) { if (wifi.Identity == wifiResult.Bssid) { canAdd = false; break; } } if (canAdd) { WifiNetworks.Add(wifiInfo); } } } WifiListCompletion.TrySetResult(WifiNetworks); }