Устанавливать учетные данные прокси-сервера Wifi программно

Приложение будет подписано с сигнатурой системы, поэтому в конце могут быть предоставлены некоторые защищенные разрешения (например, android.permission.WRITE_SECURE_SETTINGS).

Мой вопрос заключается в том, как настроить глобальные учетные данные для прокси-сервера в конкретной сети Wi-Fi, зная, что приложение будет подписано с сигнатурой системы?

Я не могу найти информацию о том, как это сделать. Основываясь на том, что можно сделать в стандартном java-приложении, может работать следующий код:

        System.setProperty("http.proxyUser", usr);
        System.setProperty("http.proxyPassword", pwd);

Но, это способ установить прокси-учетные данные на Android? Будет ли установка учетных данных прокси-сервера глобально (т.е. Для всех приложений, использующих поддержку по умолчанию http)? (IMO, даже если этот вызов работает, он ничего не изменит вне границы процесса)

Я также проверил код android.provider.Settings.java, где я нашел некоторые свойства о глобальном прокси: global_http_proxy_host и global_http_proxy_port но ничего о прокси-аутентификации.

Ответы

Ответ 1

Android использует System.setSystemProp для установки прокси в фреймворках/base/core/java/android/net/Proxy.java

Думаю, вы можете сделать то же самое, если у вас есть системные привилегии.

Я не уверен, что это затрагивает android.webkit.

Ответ 2

Нет способа установить глобальные прокси-учетные данные в Android. Там просто нет структуры в целом AOSP, который может держать его.

К сожалению, мне не удалось найти объяснений. Элементы релевантного выпуска не являются общедоступными, комментарии в исходном коде ограничены. В блоге разработчиков ничего нет. Встроенный Android от Karim Yaghmour также не проливает свет на эту проблему.

PS Этот ответ основан исключительно на анализе кода.

Ответ 3

Вы можете изменить файл ipconfig.txt в каталоге /data/misc/wifi (фактически, каталог зависит от модели устройства), если у вас есть права на подпись. Обратитесь к методу readIpAndProxyConfigurations в WifiConfigStore. Я знаю, что этот метод довольно груб, но он работает на моих корпоративных телефонах. Обратите внимание, что некоторые модели телефонов могут требовать отключения Wi-Fi и перезапуска процесса wpa_supplicant после изменения ipconfig.txt