Вы можете использовать политику для настройки сетей Wi-Fi на устройстве. API управления Android использует Open Network Configuration — стандартный формат на основе JSON, изначально разработанный в рамках проекта Chromium.
 Чтобы включить конфигурацию открытой сети в политику, задайте поле openNetworkConfiguration в ресурсе Policy .
 Для полностью управляемых устройств вы можете при желании запретить пользователю вручную настраивать параметры Wi-Fi на своем устройстве, установив параметр wifiConfigDisabled на true в ресурсе Policy .
Поддерживаемые функции
API управления Android поддерживает только подмножество спецификации Open Network Configuration.
-  Объект верхнего уровня:-  Typeнеобходимо опустить или установить значениеUnencryptedConfiguration. Шифровать конфигурацию сети в политике не нужно, поскольку вся политика зашифрована в службе Android Management API. Кроме того, предусмотрен второй уровень шифрования для конфиденциальной информации, такой как парольные фразы и закрытые ключи.
 
-  
-  Объекты NetworkConfiguration:-  GUID,Name,TypeиWiFi— поддерживаемые и обязательные поля.
-  Поле ProxySettingsнеобязательно. При его использовании поддерживаются только настройкиManualиPAC(автоматическая настройка прокси-сервера).
-  Необходимо выбрать TypeWiFi. Другие типы сетей не поддерживаются.
 
-  
-  Объекты WiFi:-  Поддерживаются SSIDиHexSSID, и должен присутствовать хотя бы один из них.-  Если заданы и HexSSID, иSSID, значения должны быть согласованными.
 
-  Если заданы и 
-  Поддерживается HiddenSSID.
-  AllowGatewayARPPollingне поддерживается.
-  SignalStrengthне поддерживается.
-  AutoConnect: это поле определяет, включена ли сеть автоматически. Этот параметр не зависит от опции автоматического подключения к сети, доступной пользователям в настройках Wi-Fi устройства.-  Если установлено значение true, сеть включена, то есть устройство может подключаться к ней автоматически без явного выбора пользователя в настройках Wi-Fi, если только пользователь не отключит автоматическое подключение для этой сети.
-  Если установлено значение false, сеть добавляется в список сохранённых сетей, но не активируется. Устройство не подключается к ней автоматически. Чтобы устройство подключилось к сети, пользователю необходимо вручную выбрать сеть в настройках Wi-Fi. После первого ручного подключения сеть считается активной, и устройство может подключаться к ней автоматически, если только пользователь не отключит автоматическое подключение для этой сети.
 
-  Если установлено значение 
-  Требуется Security, поддерживаются следующие значения: - Нет - WEP-PSK - WPA-PSK - WPA-EAP - WEP-8021X - WPA3-Enterprise_192
 
-  Поддерживаются 
-  Для парольных фраз WEP-PSKподдерживаются только 40-битные (10-значные) или 104-битные (26-значные) парольные фразы.
-  В спецификации указано, что парольные фразы WEP-PSKдолжны начинаться с префикса0x. Однако для соответствия Android Framework этот префикс не требуется.
-  Чтобы задать режим рандомизации MAC-адресов , используйте свойство MACAddressRandomizationModeсо значениямиHardwareилиAutomatic. Это свойство отсутствует в спецификации Open Network Configuration (ONC) , но представлено в AMAPI и может быть указано при настройке сетей Wi-Fi. Это применимо только к Android 13+ во всех режимах управления.-  При подключении к сети Hardwareиспользует заводской MAC-адрес.
-  Automaticпозволяет инфраструктуре Wi-Fi автоматически выбирать стратегию рандомизации MAC-адресов. Это могут быть как постоянные, так и непостоянные, случайно сгенерированные MAC-адреса, используемые при подключении к сети.
 
-  При подключении к сети 
-  Объекты EAP:
-  ClientCertPatternне поддерживается.
-  SaveCredentialsне поддерживается, поскольку учетные данные всегда сохраняются.
-  UseSystemCAsне поддерживается.
-  ServerCARefподдерживается.
-  ServerCARefsподдерживается.
-  Поддерживается DomainSuffixMatch. Конфигурации корпоративных беспроводных сетей без этого поля (или с пустым списком значений) считаются небезопасными и отклоняются платформой . Значения должны быть допустимыми доменными именами (например, «example.com», «subdomain.example.com»).
-  Для ClientCertTypeподдерживаются следующие значения:Ref,KeyPairAlias
-  Для Innerподдерживаются следующие значения:MSCHAPv2,PAP
-  Для Outerподдерживаются следующие значения:EAP-AKA,EAP-TLS,EAP-TTLS,EAP-SIM,PEAP
-  Объекты Certificate:-  Removeне поддерживается. Вместо этого исключите сертификат из конфигурации.
-  TrustBitsне поддерживается.
 
-  
Примеры
Несколько сетей Wi-Fi
 В этом примере фрагмента политики показаны три сети Wi-Fi, настроенные с разными схемами безопасности. JSON-файл конфигурации открытой сети вложен в поле openNetworkConfiguration JSON-файла Policy .
"openNetworkConfiguration": {
  "NetworkConfigurations": [
    {
      "GUID": "a",
      "Name": "Example A",
      "Type": "WiFi",
      "WiFi": {
        "SSID": "Example A",
        "Security": "None",
        "AutoConnect": true
      }
    },
    {
      "GUID": "b",
      "Name": "Example B",
      "Type": "WiFi",
      "WiFi": {
        "SSID": "Example B",
        "Security": "WEP-PSK",
        "Passphrase": "1234567890"
      }
    },
    {
      "GUID": "c",
      "Name": "Example C",
      "Type": "WiFi",
      "WiFi": {
        "SSID": "Example C",
        "Security": "WPA-PSK",
        "Passphrase": "baseball"
      }
    },
    {
      "GUID": "networkA",
      "Name": "networkA",
      "Type": "WiFi",
      "WiFi": {
        "SSID": "networkA",
        "Security": "WPA-PSK",
        "Passphrase": "pwd1234567",
        "MACAddressRandomizationMode": "Hardware"
      }
    }
  ]
}EAP-аутентификация
 В этом примере фрагмента политики показана беспроводная сеть, настроенная с аутентификацией EAP-TLS. Помимо объекта NetworkConfigurations , пример включает два объекта Certificates для клиентского и серверного сертификатов.
"openNetworkConfiguration": {
   "Type": "UnencryptedConfiguration",
   "NetworkConfigurations": [
      {
         "GUID": "a",
         "Name": "Example A",
         "Type": "WiFi",
         "WiFi": {
            "SSID": "Example A",
            "EAP": {
               "Outer": "EAP-TLS",
               "Identity": "example",
               "DomainSuffixMatch": [
                  "example.com",
                  "example.org"
               ],
               "ServerCARefs": ["abc123"],
               "ClientCertType": "Ref",
               "ClientCertRef": "xyz456"
            },
            "Security": "WPA-EAP"
         }
      }
   ],
   "Certificates": [
      {
         "GUID": "abc123",
         "Type": "Server",
         "X509": "TWFuIGlzIGRpc3Rpbmd1a"
      },
      {
         "GUID": "xyz456",
         "Type": "Client",
         "PKCS12": "6PQIEQYJKoZbdDu8gwggRlqCCAPEbAAcGClgvcNAQc"
      }
   ]
} Поле ClientCertType также может быть установлено в KeyPairAlias , а поле ClientCertKeyPairAlias может использоваться для указания псевдонима установленной (см. DevicePolicyManager.installKeyPair ) или сгенерированной (см. DevicePolicyManager.generateKeyPair ) пары ключей KeyChain, которая используется для аутентификации Wi-Fi. Для Android 12 и более поздних версий пара ключей KeyChain с псевдонимом, указанным в ClientCertKeyPairAlias , предоставляется для аутентификации в сетях Wi-Fi и используется для аутентификации в соответствующей сети Wi-Fi. До Android 12 сообщается nonComplianceDetail с причиной API_LEVEL . nonComplianceDetail с причиной INVALID_VALUE и конкретной причиной ONC_WIFI_KEY_PAIR_ALIAS_NOT_CORRESPONDING_TO_EXISTING_KEY сообщается, если указанный псевдоним пары ключей не соответствует существующему ключу. Ниже приведен пример политики:
"openNetworkConfiguration": {
   "Type": "UnencryptedConfiguration",
   "NetworkConfigurations": [
      {
         "GUID": "a",
         "Name": "Example A",
         "Type": "WiFi",
         "WiFi": {
            "SSID": "Example A",
            "EAP": {
               "Outer": "EAP-TLS",
               "Identity": "example",
               "DomainSuffixMatch": [
                  "example.com",
                  "example.org"
               ],
               "ServerCARefs": ["abc123"],
               "ClientCertType": "KeyPairAlias",
               "ClientCertKeyPairAlias": "key-alias"
            },
            "Security": "WPA-EAP"
         }
      }
   ],
   "Certificates": [
      {
         "GUID": "abc123",
         "Type": "Server",
         "X509": "TWFuIGlzIGRpc3Rpbmd1a"
      }
   ]
} Поле Security также может быть WPA3-Enterprise_192 , что представляет собой сеть WPA-EAP, настроенную с 192-битным режимом WPA3.
"openNetworkConfiguration": {
   "Type": "UnencryptedConfiguration",
   "NetworkConfigurations": [
      {
         "Type": "WiFi",
         "Name": "Example A",
         "GUID": "A",
         "WiFi": {
            "SSID": "Example A",
            "EAP": {
               "Outer": "EAP-TLS",
               "Identity": "example",
               "ServerCARefs": ["abc123"],
               "ClientCertType": "Ref",
               "ClientCertRef": "xyz456",
               "DomainSuffixMatch": ["example.com"]
            },
            "Security": "WPA3-Enterprise_192",
            "AutoConnect": true
         }
      }
   ],
   "Certificates": [
      {
         "GUID": "abc123",
         "Type": "Server",
         "X509": "TWFuIGlzIGRpc3Rpbmd1a"
      },
      {
         "GUID": "xyz456",
         "Type": "Client",
         "PKCS12": "6PQIEQYJKoZbdDu8gwggRlqCCAPEbAAcGClgvcNAQc"
      }
   ]
}