コード例 #1
0
        /// <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);
        }
コード例 #2
0
            /// <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);
            }