Приложению Android может понадобиться текущий адрес прокси, хотя у него нет настроек подключения. Начните с интерфейса сетевого прокси, а не с поиска столбца базы данных с именем user или password.

Конфигурация APN телефонии описывает доступ оператора. Её поля учётной записи относятся к этой конфигурации. Они не являются общим хранилищем учётных данных для HTTP-прокси, выбранного в Wi-Fi, управляемой сети или приватном подключении приложения.

Требуемая информацияСоответствующая конфигурация
Учётная запись доступа к данным оператораНастройки APN с ограничениями доступа платформы
Текущий HTTP-прокси сетиConnectivityManager и ProxyInfo
Вход, требуемый выбранным проксиПоддерживаемый клиентом поток аутентификации и одобренный источник учётной записи

В поддерживаемой версии Android ConnectivityManager.getDefaultProxy() возвращает применимые сведения о прокси. Результат может отсутствовать. ProxyInfo может описывать прямой конечный узел или конфигурацию PAC, поэтому проверьте его форму, прежде чем считать каждый результат парой «хост и порт».

ProxyInfo не предоставляет универсальную пару имени пользователя и пароля. Если выбранный сервис требует аутентификации, получите нужную учётную запись через поддерживаемый приложением механизм учётных данных. Запрос аутентификации прокси и вход у оператора могут использовать совершенно разные личности.

Это также отделяет обнаружение от использования. Нативный сокет или SDK с собственным транспортом не становится прокси-осведомлённым только потому, что приложение может читать ProxyInfo. Передайте выбранный маршрут клиенту, который поддерживает его протокол и метод аутентификации.

Более старые примеры, обращающиеся к поставщику содержимого телефонии, описывают конкретные выпуски и разрешения Android. Они полезны как исторический контекст, но не могут превратить учётную запись APN в недостающий пароль для несвязанного прокси.

Похожие статьи