Most visited

Recently visited

Added in API level 14

VpnService.Builder

public class VpnService.Builder
extends Object

java.lang.Object
   ↳ android.net.VpnService.Builder


Helper类创建一个VPN接口。 这个类应该始终在外层VpnService的范围内使用。

也可以看看:

Summary

Public constructors

VpnService.Builder()

Public methods

VpnService.Builder addAddress(InetAddress address, int prefixLength)

添加一个网络地址到VPN接口。

VpnService.Builder addAddress(String address, int prefixLength)

使用数字地址字符串将VPN网络地址添加到VPN接口的便捷方法。

VpnService.Builder addAllowedApplication(String packageName)

添加允许访问VPN连接的应用程序。

VpnService.Builder addDisallowedApplication(String packageName)

添加拒绝访问VPN连接的应用程序。

VpnService.Builder addDnsServer(String address)

使用数字地址字符串将DNS服务器添加到VPN连接的便捷方法。

VpnService.Builder addDnsServer(InetAddress address)

将VPN服务器添加到VPN连接。

VpnService.Builder addRoute(InetAddress address, int prefixLength)

添加到VPN接口的网络路由。

VpnService.Builder addRoute(String address, int prefixLength)

使用数字地址字符串将网络路由添加到VPN接口的便捷方法。

VpnService.Builder addSearchDomain(String domain)

将搜索域添加到DNS解析器。

VpnService.Builder allowBypass()

允许所有应用程序跳过此VPN连接。

VpnService.Builder allowFamily(int family)

允许来自指定地址系列的流量。

ParcelFileDescriptor establish()

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

VpnService.Builder setBlocking(boolean blocking)

将VPN接口的文件描述符设置为阻塞/非阻塞模式。

VpnService.Builder setConfigureIntent(PendingIntent intent)

PendingIntent设置为用户配置VPN连接的活动。

VpnService.Builder setMtu(int mtu)

设置VPN接口的最大传输单元(MTU)。

VpnService.Builder setSession(String session)

设置此会话的名称。

VpnService.Builder setUnderlyingNetworks(Network[] networks)

设置VPN为其上游连接使用的底层网络。

Inherited methods

From class java.lang.Object

Public constructors

VpnService.Builder

Added in API level 14
VpnService.Builder ()

Public methods

addAddress

Added in API level 14
VpnService.Builder addAddress (InetAddress address, 
                int prefixLength)

添加一个网络地址到VPN接口。 IPv4和IPv6地址都受支持。 在致电establish()之前,必须至少设置一个地址。 隐式添加地址允许来自该地址系列(即IPv4或IPv6)的流量通过VPN路由。 @see #allowFamily

Parameters
address InetAddress
prefixLength int
Returns
VpnService.Builder
Throws
IllegalArgumentException if the address is invalid.

addAddress

Added in API level 14
VpnService.Builder addAddress (String address, 
                int prefixLength)

使用数字地址字符串将VPN网络地址添加到VPN接口的便捷方法。 有关数字地址格式的定义,请参阅InetAddress 隐式添加地址允许来自该地址系列(即IPv4或IPv6)的流量通过VPN路由。 @see #allowFamily

Parameters
address String
prefixLength int
Returns
VpnService.Builder
Throws
IllegalArgumentException if the address is invalid.

也可以看看:

addAllowedApplication

Added in API level 21
VpnService.Builder addAllowedApplication (String packageName)

添加允许访问VPN连接的应用程序。 如果此方法至少调用一次,则只允许通过此方法添加的应用程序(并且不允许其他人)访问。 否则(如果此方法从未被调用),所有应用程序默认都是允许的。 如果添加了一些应用程序,其他未添加的应用程序将使用网络,就好像VPN未运行一样。 A VpnService.Builder可能只有一组允许的应用程序或一组不允许的应用程序,但不能同时使用两者。 在调用addDisallowedApplication(String)之后调用此方法,反之亦然,将抛出UnsupportedOperationException packageName必须是当前安装的应用程序的规范名称。 如果没有这样的应用程序,则会引发PackageManager.NameNotFoundException

Parameters
packageName String: The full name (e.g.: "com.google.apps.contacts") of an application.
Returns
VpnService.Builder this VpnService.Builder object to facilitate chaining method calls.
Throws
If the application isn't installed.
PackageManager.NameNotFoundException

addDisallowedApplication

Added in API level 21
VpnService.Builder addDisallowedApplication (String packageName)

添加拒绝访问VPN连接的应用程序。 默认情况下,除了通过此方法拒绝的应用程序之外,所有应用程序均被允许访问。 拒绝的应用程序将使用网络,就好像VPN没有运行一样。 A VpnService.Builder可能只有一组允许的应用程序或一组不允许的应用程序,但不能同时使用两者。 在调用addAllowedApplication(String)之后调用此方法(反之亦然)将抛出UnsupportedOperationException packageName必须是当前安装的应用程序的规范名称。 如果没有这样的应用程序,则会引发PackageManager.NameNotFoundException

Parameters
packageName String: The full name (e.g.: "com.google.apps.contacts") of an application.
Returns
VpnService.Builder this VpnService.Builder object to facilitate chaining method calls.
Throws
If the application isn't installed.
PackageManager.NameNotFoundException

addDnsServer

Added in API level 14
VpnService.Builder addDnsServer (String address)

使用数字地址字符串将DNS服务器添加到VPN连接的便捷方法。 有关数字地址格式的定义,请参见InetAddress 隐式添加服务器允许来自该地址系列(即IPv4或IPv6)的流量通过VPN路由。 @see #allowFamily

Parameters
address String
Returns
VpnService.Builder
Throws
IllegalArgumentException if the address is invalid.

也可以看看:

addDnsServer

Added in API level 14
VpnService.Builder addDnsServer (InetAddress address)

将VPN服务器添加到VPN连接。 IPv4和IPv6地址都受支持。 如果没有设置,则将使用默认网络的DNS服务器。 隐式添加服务器允许来自该地址系列(即IPv4或IPv6)的流量通过VPN路由。 @see #allowFamily

Parameters
address InetAddress
Returns
VpnService.Builder
Throws
IllegalArgumentException if the address is invalid.

addRoute

Added in API level 14
VpnService.Builder addRoute (InetAddress address, 
                int prefixLength)

添加到VPN接口的网络路由。 支持IPv4和IPv6路由。 隐式添加路由允许来自该地址系列(即IPv4或IPv6)的流量通过VPN路由。 @see #allowFamily

Parameters
address InetAddress
prefixLength int
Returns
VpnService.Builder
Throws
IllegalArgumentException if the route is invalid.

addRoute

Added in API level 14
VpnService.Builder addRoute (String address, 
                int prefixLength)

使用数字地址字符串将网络路由添加到VPN接口的便捷方法。 有关数字地址格式的定义,请参见InetAddress 隐式添加路由允许来自该地址系列(即IPv4或IPv6)的流量通过VPN路由。 @see #allowFamily

Parameters
address String
prefixLength int
Returns
VpnService.Builder
Throws
IllegalArgumentException if the route is invalid.

也可以看看:

addSearchDomain

Added in API level 14
VpnService.Builder addSearchDomain (String domain)

将搜索域添加到DNS解析器。

Parameters
domain String
Returns
VpnService.Builder

allowBypass

Added in API level 21
VpnService.Builder allowBypass ()

允许所有应用程序跳过此VPN连接。 默认情况下,所有来自应用的流量都通过VPN接口转发,应用无法旁路VPN。 如果调用此方法,应用程序可能会使用诸如bindProcessToNetwork(Network)方法直接通过底层网络或任何其他有权访问的网络发送/接收数据。

Returns
VpnService.Builder this VpnService.Builder object to facilitate chaining of method calls.

allowFamily

Added in API level 21
VpnService.Builder allowFamily (int family)

允许来自指定地址系列的流量。 默认情况下,如果没有将特定系列(IPv4或IPv6)的地址,路由或DNS服务器添加到此VPN,则该系列的所有传出通信都会被阻止。 如果添加了任何地址,路由或DNS服务器,则允许该系列。 即使不添加该系列的地址,路由或DNS服务器,该方法也可以解除地址系列的阻塞。 如果支持,那么该家庭的流量通常会落入底层网络。 family必须是AF_INET (对于IPv4)或AF_INET6 (对于IPv6)。 如果它不是,则抛出IllegalArgumentException

Parameters
family int: The address family (AF_INET or AF_INET6) to allow.
Returns
VpnService.Builder this VpnService.Builder object to facilitate chaining of method calls.

establish

Added in API level 14
ParcelFileDescriptor establish ()

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

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

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

Returns
ParcelFileDescriptor ParcelFileDescriptor of the VPN interface, or null if the application is not prepared.
Throws
IllegalArgumentException if a parameter is not accepted by the operating system.
IllegalStateException if a parameter cannot be applied by the operating system.
SecurityException if the service is not properly declared in AndroidManifest.xml.

也可以看看:

setBlocking

Added in API level 21
VpnService.Builder setBlocking (boolean blocking)

将VPN接口的文件描述符设置为阻塞/非阻塞模式。 默认情况下,由establish()返回的establish()是非阻塞的。

Parameters
blocking boolean: True to put the descriptor into blocking mode; false for non-blocking.
Returns
VpnService.Builder this VpnService.Builder object to facilitate chaining method calls.

setConfigureIntent

Added in API level 14
VpnService.Builder setConfigureIntent (PendingIntent intent)

PendingIntent设置为用户配置VPN连接的活动。 如果未设置,则配置按钮将不会显示在系统管理对话框中。

Parameters
intent PendingIntent
Returns
VpnService.Builder

setMtu

Added in API level 14
VpnService.Builder setMtu (int mtu)

设置VPN接口的最大传输单元(MTU)。 如果未设置,则将使用操作系统中的默认值。

Parameters
mtu int
Returns
VpnService.Builder
Throws
IllegalArgumentException if the value is not positive.

setSession

Added in API level 14
VpnService.Builder setSession (String session)

设置此会话的名称。 它将显示在系统管理的对话框和通知中。 这是建议不要求的。

Parameters
session String
Returns
VpnService.Builder

setUnderlyingNetworks

Added in API level 22
VpnService.Builder setUnderlyingNetworks (Network[] networks)

设置VPN为其上游连接使用的底层网络。

Parameters
networks Network: An array of networks the VPN uses to tunnel traffic to/from its servers.
Returns
VpnService.Builder this VpnService.Builder object to facilitate chaining method calls.

也可以看看:

Hooray!