web-dev-qa-db-fra.com

Configurer les informations d'identification du proxy Wifi par programme

L'application sera signée avec la signature du système. Ainsi, à la fin, certaines autorisations protégées (telles que Android.permission.WRITE_SECURE_SETTINGS) peuvent être accordées. 

Ma question est alors de savoir comment configurer les informations d'identification de manière globale pour un proxy sur un réseau WiFi particulier, sachant que l'application sera signée avec une signature système.

Je ne trouve aucune information sur la manière de procéder. En fonction de ce qui peut être fait dans une application Java standard, le code suivant peut fonctionner:

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

Mais est-ce la manière de définir les informations d'identification du proxy sur Android? Est-ce que cela va définir les informations d'identification du proxy globalement (c'est-à-dire pour toutes les applications utilisant le support http par défaut)? (OMI, même si cet appel fonctionne, cela ne changera rien en dehors des limites du processus)

J'ai également vérifié le code de Android.provider.Settings.Java où j'ai trouvé des propriétés concernant le proxy global: global_http_proxy_Host et global_http_proxy_port, mais rien sur l'authentification par proxy.

13
ben75

Android utilise System.setSystemProp pour définir le proxy dans frameworks/base/core/Java/Android/net/Proxy.Java

Je suppose que vous pouvez faire la même chose si vous avez des privilèges système.

Je ne sais pas si cela affecte Android.webkit cependant.

6
rds

Il n'y a aucun moyen de définir des informations d'identification de proxy globales dans Android. Il n'y a tout simplement aucune structure dans l'ensemble du PSBA capable de le contenir. 

Malheureusement, je n'ai pas réussi à trouver d'explication à cela. Les éléments de suivi des problèmes pertinents ne sont pas publics, les commentaires dans le code source sont rares. Il n'y a rien dans le blog des développeurs sur cette question. Android intégré par Karim Yaghmour ne fait pas la lumière sur la question non plus.

P.S. Cette réponse est basée uniquement sur l'analyse de code. 

Vous pouvez modifier le fichier ipconfig.txt dans votre répertoire/data/misc/wifi (en fait, le répertoire dépend du modèle de périphérique) si vous disposez des droits de signature. Veuillez vous reporter à la méthode readIpAndProxyConfigurations dans WifiConfigStore . Je sais que cette méthode est assez rudimentaire, mais elle fonctionne sur mes téléphones d'entreprise. Veuillez noter que certains modèles de téléphones peuvent nécessiter la désactivation du Wi-Fi et le redémarrage du processus wpa_supplicant après la modification du fichier ipconfig.txt.

0
ErDo