gpt4 book ai didi

java - Android VPN Service Builder.establish() 返回 null

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:31:24 26 4
gpt4 key购买 nike

我正在尝试让 VPN 服务在 Android 上运行。
为此,我想我必须使用 VpnService 类中提供的 Builder 类,它由 android SDK 提供。现在,当我尝试这样做时,方法

builder.establish()

返回空值。这是我写的完整方法;

// If theInterface still exists from last time, reuse it, it has the same parameters.
if (theInterface != null) {
return;
}
// configure the VPN settings.
Builder builder = new Builder();
builder.setMtu(1500);
builder.addAddress("10.0.2.0", 32);
builder.addRoute("0.0.0.0", 0);
try {
theInterface.close();
} catch (Exception e) {
// Ignore
}
theInterface = builder.establish();
Log.i(TAG + "IMPORTANT", builder.toString());

代码崩溃于:

Log.i(TAG + "IMPORTANT", builder.toString());

调试时,调试器会在程序的整个执行过程中提示“theInterface = null”。

编辑:
我查看了位于 android.net.VpnService
中的 Builder 类在这个类中,似乎有一个隐藏类(IConnectivityManager),也许我的问题与此有关...
这是我正在谈论的一段代码。

/**
* Use IConnectivityManager since those methods are hidden and not
* available in ConnectivityManager.
*/
private static IConnectivityManager getService() {
return IConnectivityManager.Stub.asInterface(
ServiceManager.getService(Context.CONNECTIVITY_SERVICE));
}

最佳答案

作为 VpnService.Builder.establish documents :

Returns ParcelFileDescriptor of the VPN interface, or null if the application is not prepared.

需要调用 VpnService.prepare: http://developer.android.com/reference/android/net/VpnService.html#prepare(android.content.Context)第一

关于java - Android VPN Service Builder.establish() 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29221665/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com