Установить VPN-соединение программно на Android 4.0

Я работаю над программной настройкой VPN-подключения на устройствах Android. Я успешно смог сделать это для устройств, использующих ОС 2.3.5 и ранее (я использовал отражение, чтобы добраться до скрытых классов). Но с Android 4.0 они избавились от старых классов и вместо этого используют класс VPNService.

Я подумал, что для начала лучше всего использовать предоставленный Android пример ToyVPN, но я столкнулся с множеством проблем. В примере кода им нужно было только отправить адрес сервера:

InetSocketAddress server = new InetSocketAddress(mServerAddress, Integer.parseInt(mServerPort));

А затем создал VPN-туннель, открыв канал:

tunnel = DatagramChannel.open();

Но в моем случае мне нужно отправить адрес сервера, имя пользователя и пароль. До сих пор я не понял, как это сделать. Моим лучшим предположением было сделать что-то вроде этого:

Authenticator.setDefault(new Authenticator(){
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication("user","pass".toCharArray());
        }});

    try {
        // Create a DatagramChannel as the VPN tunnel.

        tunnel = DatagramChannel.open();

Но это не сработало. поэтому я спрашиваю:

Is there a way, other than what's used in ToyVpn, to create a VPN connection programmatically? If not, how do I send the credentials when I want to establish a connection to the server?

Edit

Я забыл упомянуть, что мне нужно указать тип VPN (PPTP, L2TP, L2TP / IPSec PSK или L2TP / IPSec CRT).

Ответы на вопрос(2)

Ваш ответ на вопрос