Как получить подключенный SSID в Xamarin.Forms? - PullRequest
1 голос
/ 02 марта 2020

Мне нужно получить SSID текущей сети, к которой я подключен.

Вот код, который я использовал для поиска SSID в Xamarin. Android :

WifiManager wifiManager = (WifiManager)(Application.Context.GetSystemService(WifiService));

if (wifiManager != null)
{
    var ssid =  wifiManager.ConnectionInfo.SSID;
}
else
{
    var str =  "WiFiManager is NULL";
}

Но мне нужно реализовать это в Xamarin.Forms .

Как я могу это сделать?

1 Ответ

2 голосов
/ 02 марта 2020

Вы можете использовать DependencyService .

Класс DependencyService - это локатор служб, который позволяет приложениям Xamarin.Forms вызывать функциональные возможности собственной платформы из общего кода.

Создание общедоступного c интерфейса (для организации, возможно, под Mobile > Services > IGetSSID)

public interface IGetSSID
{
    string GetSSID();
}

Создание Android Реализация

[assembly: Dependency(typeof(GetSSIDAndroid))]
namespace yournamespace
{
    public class GetSSIDAndroid : IGetSSID
    {
        public string GetSSID()
        {
            WifiManager wifiManager = (WifiManager)(Android.App.Application.Context.GetSystemService(Context.WifiService));

            if (wifiManager != null && !string.IsNullOrEmpty(wifiManager.ConnectionInfo.SSID))
            {
                return wifiManager.ConnectionInfo.SSID;
            }
            else
            {
                return "WiFiManager is NULL";
            }
        }
    }
}

Затем в ваших формах вы получите SSID, например:

var ssid = DependencyService.Get<IGetSSID>().GetSSID();

Примечание. Не забудьте добавить это разрешение на вашем Android Манифесте

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
...