Ustaw połączenie VPN programowo na Androida 4.0
Pracuję nad programowym ustawieniem połączenia VPN na urządzeniach z Androidem. Udało mi się to zrobić dla urządzeń korzystających z systemu operacyjnego 2.3.5 i wcześniejszych (użyłem refleksji, aby dostać się do ukrytych klas). Ale z Androidem 4.0 pozbyli się starych klas i zamiast tego użyli klasy VPNService.
Pomyślałem, że najlepszym miejscem do rozpoczęcia będzie użycie dostarczonego przykładu ToyVPN, ale stoję przed wieloma wyzwaniami. W przykładowym kodzie wystarczyło jedynie wysłać adres serwera:
InetSocketAddress server = new InetSocketAddress(mServerAddress, Integer.parseInt(mServerPort));
Następnie utworzył tunel VPN, otwierając kanał:
tunnel = DatagramChannel.open();
Ale w moim przypadku muszę wysłać adres serwera, nazwę użytkownika i hasło. Jak dotąd nie wiem, jak to zrobić. Moim najlepszym pomysłem było zrobienie czegoś takiego:
Authenticator.setDefault(new Authenticator(){
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("user","pass".toCharArray());
}});
try {
// Create a DatagramChannel as the VPN tunnel.
tunnel = DatagramChannel.open();
Ale to nie zadziałało. więc pytam:
Czy istnieje sposób, poza tym, co jest używane w ToyVpn, na programowe utworzenie połączenia VPN?Jeśli nie, jak mogę wysłać poświadczenia, gdy chcę nawiązać połączenie z serwerem?Edytować
Zapomniałem wspomnieć, że muszę określić typ VPN (PPTP, L2TP, L2TP / IPSec PSK lub L2TP / IPSec CRT).