开启“始终开启 VPN”功能 android

问题描述 投票:0回答:1

我想知道是否有人可以帮助我解决这个问题。 我想在 kotlin 中以编程方式打开“始终开启 VPN”功能。 如果有人可以提供一些代码或解释实现它的过程,我很感激。

我还有一个问题,以这种方式实现VPN Kill Switch是否合适?

android kotlin vpn
1个回答
0
投票

总结以下官方文档

1.使用
VpnService

创建您的 VPN 服务

使用

BIND_VPN_SERVICE
权限保护服务,这样只有系统可以绑定到您的服务

使用“android.net.VpnService”意图过滤器通告服务,以便系统可以找到您的服务。

manifest

中声明服务的示例
<service android:name=".MyVpnService"
     android:permission="android.permission.BIND_VPN_SERVICE">
     <intent-filter>
         <action android:name="android.net.VpnService"/>
     </intent-filter>
</service>

2.准备并连接服务

要准备应用程序以成为用户当前的 VPN 服务,请调用 VpnService.prepare()

如果使用设备的人尚未授予您的应用程序权限,该方法将返回活动意图。您可以使用此意图来启动请求许可的系统活动。
系统显示一个与其他权限对话框类似的对话框,例如相机或联系人访问。如果您的应用程序已准备就绪,该方法将返回

null

对于连接步骤,我建议您仔细阅读本文档部分,以便您能够充分理解该服务。

3.启动服务

您的 VPN 服务可以通过以下方式启动:
1. 您的应用程序启动服务 - 通常是因为有人点击了连接按钮。
2.系统启动服务,因为永远在线 VPN 已打开。

系统通过调用 onStartCommand() 在后台启动您的服务。
但是,Android 在 8.0 版本(API 级别 26)或更高版本中对后台应用程序进行了限制。如果您支持这些 API 级别,则需要通过调用 Service.startForeground() 将服务转换到前台

4.停止服务

有关停止步骤,请按照本部分仔细阅读,以了解服务如何以及何时停止/终止。

永远在线

实现Always-on功能的步骤与上面的步骤相差不远。使用此部分了解更多信息,您也可以使用此项目来帮助您。该项目是用 Java 编写的,而不是 Kotlin 编写的,但它可以帮助您了解如何在应用程序中实现它。

© www.soinside.com 2019 - 2024. All rights reserved.