SO上有许多答案,声称您无法以编程方式在Android设备上配置VPN配置文件。 Android的VpnService API仅允许在您自己的应用中使用VPN,并且没有其他API可用。
OpenVPN for Android等应用程序如何实现这一目标?我可以通过OpenVPN应用程序配置配置文件,其他应用程序将能够使用此连接。
您误解了VpnService.Builder
的establish()
方法返回的句柄/文件描述符的性质和目的。您可能希望再次阅读API说明。
它的要点是它是TUN设备的文件描述符,Android通过策略路由引导来自其他应用程序的网络流量(受影响的应用程序/流量可以通过构建器的方法进行控制)。然后,应用程序可以使用文件描述符来读取其他应用程序发送的数据包,例如通过VPN连接(使用常规UDP / TCP套接字)转发它们。通过写入TUN设备的文件描述符,同样可以将从VPN连接返回的流量重新注入系统。