![](/img/trans.png)
[英]Using a file descriptor from Android VpnService.Builder in native code
[英]IllegalState when creating interface with Android 4.0's VpnService.Builder
我正在嘗試在SDK 4.0中添加到Android的VpnService。 我已經啟動了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。Establishment()調用引發。
這是完整的堆棧跟蹤:
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)
您可以使用adb logcat
來驗證您是否遇到了此問題 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.