VpnService.Builder.Establish 方法

定义

使用提供给此生成器的参数创建 VPN 接口。

[Android.Runtime.Register("establish", "()Landroid/os/ParcelFileDescriptor;", "GetEstablishHandler")]
public virtual Android.OS.ParcelFileDescriptor? Establish ();
[<Android.Runtime.Register("establish", "()Landroid/os/ParcelFileDescriptor;", "GetEstablishHandler")>]
abstract member Establish : unit -> Android.OS.ParcelFileDescriptor
override this.Establish : unit -> Android.OS.ParcelFileDescriptor

返回

ParcelFileDescriptor 的 VPN 接口,或者 null 应用程序未准备好。

属性

例外

如果操作系统不接受参数,则为 。

如果操作系统无法应用参数,则为 。

如果服务未正确声明,则 AndroidManifest.xml

注解

使用提供给此生成器的参数创建 VPN 接口。 该接口适用于 IP 数据包,并返回文件描述符供应用程序访问它们。 每次读取都会检索路由到接口的传出数据包。 每次写入都会注入一个传入数据包,就像从接口接收数据包一样。 默认情况下,文件描述符处于非阻止模式,以避免阻止 Java 线程。 若要在本机空间中完全使用文件描述符,请参阅 ParcelFileDescriptor#detachFd()。 应用程序必须在 VPN 连接终止时关闭文件描述符。 VPN 接口将被删除,系统会自动还原网络。

为了避免冲突,只能同时存在一个活动 VPN 接口。 通常,网络参数在 VPN 连接的生存期内永远不会更改。 应用程序在关闭前一个描述符后也经常创建新的文件描述符。 但是,执行无缝交接时,很少但不可能有两个接口。 在这种情况下,成功创建新接口时,将停用旧接口。 这两个文件描述符都有效,但现在传出数据包将路由到新接口。 因此,在清空旧文件描述符后,应用程序必须关闭它并开始使用新文件描述符。 如果无法创建新接口,则现有接口及其文件描述符保持不变。

如果由于任何原因无法创建接口,将引发异常。 但是,此方法返回 null 未准备或吊销应用程序。 这有助于解决其他 VPN 应用程序之间的可能争用情况。

适用于 . 的 android.net.VpnService.Builder.establish()Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

适用于

另请参阅