3

我知道 VpnService 是一项服务,并且 stopSelf() 用于停止服务本身(至少自从调用 onDestroy() 以来似乎如此)。

问题是当我在我的服务实例中调用 stopSelf() 时,顶部的通知(一旦调用 VpnService.Builder.establish() 就会出现)不会自行清除。

此外,我注意到 VPN 设置(连接、路由、名称服务器)在通知仍然存在时保持不变,因此 Android 和 VpnService 之间存在断开连接。

任何人都可以帮助我以编程方式取消 VPN 吗?

4

1 回答 1

6

经过一堆测试,看来如果VpnService.Builder.establish()返回的ParcelFileDescriptor中的FD是关闭的,那么通知就被清除了。

因此,在本机端,如果您关闭对 FD 的所有引用,通知将清除。请务必在 FD 上实际调用 close()。

于 2013-10-11T15:07:29.337 回答