android vpn api

VpnService.Builder addAllowedApplication (String packageName)
添加一个允许访问VPN连接的应用.
如果这个方法至少被调用了一次, 那么 只有被这个方法添加了的应用 被运行访问VPN连接.
如果这个方法从来都没有被调用, 那么, 所有的应用都可以访问VPN连接.
如果VPN没有运行, 那些没有添加的应用才可以访问网络. 也就是说, VPN运行时, 那么没有添加的应用是不可以访问网络的?

VpnService.Builder 只能设置允许列表 或者 不允许列表 (当然, 也可以两者都不设置)
——————

VpnService.Builder addDisallowedApplication (String packageName)

默认所有应用都可以访问VPN. 当用addDisallowedApplication 添加一个被拒绝的应用后, 如果VPN服务没有运行,这个被拒绝的应用才可以访问网络

——————–

VpnService.Builder allowBypass ()

允许所有的应用 忽略这个VPN连接.
默认情况下, 从apps的所有流量 都转发给 VPN接口 . apps是没办法 避开VPN的.
如果这个方法被调用, apps可以用 类似 bindProcessToNetwork(Network) 的方法, 来直接从底层网络来手法数据.