IllegalState при создании интерфейса с Android 4.0 VpnService.Builder - PullRequest
0 голосов
/ 30 ноября 2011

Я экспериментирую с VpnService, который был добавлен в Android в SDK 4.0. Я дошел до запуска VpnService, однако я не могу создать виртуальный интерфейс. Мой код вызывает исключение IllegalStateException, и я не могу понять, почему. Код находится внутри Thread, который является внутренним классом моего класса VPNService.

Мой урезанный пример выглядит так:

        ParcelFileDescriptor pfd = null;

        VpnService.Builder b = new VpnService.Builder();
        try{
            b.addAddress("10.0.6.2", 24);
            b.setMtu(1460);
            b.setSession("TunnelTest");
        } catch(IllegalArgumentException e){
            Log.v("Service", "Address is invalid!");
            stopSelf();
            return;
        }

        try{
            pfd = b.establish();
        } catch (IllegalArgumentException e){
            Log.v("Service", "Interface was provided with an illegal argument");
        } catch (IllegalStateException e){
            e.printStackTrace();
            Log.v("Service", "Illegal state");
        } catch (SecurityException e){
            Log.v("Service", "Security exception thrown");

Я пытаюсь создать виртуальный интерфейс с IP 10.0.6.2, принадлежащий подсети 10.6.0.0/24. Исключение выдается вызовом b.establish ().

Это полная трассировка стека:

11-30 17:51:10.863: W/System.err(2741): java.lang.IllegalStateException: Cannot create interface
11-30 17:51:10.875: W/System.err(2741):     at android.os.Parcel.readException(Parcel.java:1335)
11-30 17:51:10.875: W/System.err(2741):     at android.os.Parcel.readException(Parcel.java:1281)
11-30 17:51:10.875: W/System.err(2741):     at android.net.IConnectivityManager$Stub$Proxy.establishVpn(IConnectivityManager.java:1321)
11-30 17:51:10.875: W/System.err(2741):     at android.net.VpnService$Builder.establish(VpnService.java:472)
11-30 17:51:10.875: W/System.err(2741):     at no.simtel.TestVpnService$TestVpn.run(TestVpnService.java:37)

1 Ответ

0 голосов
/ 03 декабря 2011

Вы можете использовать adb logcat, чтобы убедиться, что вы столкнулись с этой проблемой .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...