web-dev-qa-db-fra.com

Comment créer par programmation une nouvelle interface VPN avec Android 4.0?

Je voudrais savoir s'il est possible de créer une interface VPN par programme avec les nouvelles API VPN dans Android 4.0. J'ai parcouru http://developer.Android. com/resources/samples/ToyVpn mais il s'agit de créer un client VPN complet qui gère les connexions, etc. Je veux seulement ajouter une nouvelle configuration VPN et éventuellement supprimer celles existantes.

Il y a beaucoup de questions comme celle-ci, mais elles semblent toutes être antérieures à 4.0. Je comprends qu'avant cela n'était pas possible, mais on pourrait penser que les nouvelles API VPN fournissaient une telle fonctionnalité. Alors, quelqu'un a-t-il trouvé un moyen de le faire, ou n'est-ce toujours pas possible? S'il y a un moyen, veuillez me diriger dans la bonne direction.

29
gelupa

Il semble que cela soit géré en interne via les classes com.Android.settings.vpn2.VpnDialog (et connexes), qui font essentiellement KeyStore.getInstance().put("VPN_[VPN ID]", [encoded VpnProfile object]>) - ce qui provoque ensuite des fichiers avec des noms comme "/ data/misc/vpn/1000_VPN_ [VPN ID] "pour être créé (où 1000 est apparemment l'ID de processus système).

En utilisant la réflexion (ou l'un des hacks pour accéder aux API cachées/internes), vous pouvez le faire vous-même, mais comme votre processus ne s'exécutera pas en tant que processus système, le navigateur VPN du système ne les verra pas.

Cependant, selon cela ( http://code.google.com/p/Android/issues/detail?id=8915 ), il existe au moins une application qui le fait sans téléphone rooté, mais la source ne semble pas être disponible ... alors peut-être qu'il y a un moyen de le faire que je ne peux pas comprendre - je serais certainement intéressé s'il y en a.

P.S. - Voici une autre question similaire (bien qu'il s'agisse spécifiquement de l'utilisation d'un appareil rooté): Créer un profil VPN sur Android

13