打开“始终在线VPN”功能Android

fsi0uk1n  于 2023-11-15  发布在  Android
关注(0)|答案(1)|浏览(164)

我想知道是否有人可以帮助我。我想在Kotlin中以编程方式打开“Always-on vpn”功能。我很感激如果有人可以提供一些代码或解释实现它的过程。
另外,我有一个问题,它是适当的,以这种方式实现VPN杀死开关或没有?

huwehgph

huwehgph1#

以下是官方documentation

1.使用VpnService创建VPN服务

使用BIND_VPN_SERVICE权限保护服务,以便只有系统可以绑定到您的服务**。

**使用“android.net.VpnService”**Intent过滤器验证服务,以便系统可以找到您的服务。

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()
如果使用设备的人员尚未授予您的应用权限,则该方法将返回Activity Intent。您可以使用此Intent启动请求权限的系统Activity。

系统会显示一个类似于其他权限对话框的对话框,例如摄像头或联系人访问。如果您的应用已经准备好,则该方法返回null

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

3.启动服务

您的VPN服务可以通过以下方式启动:
1.你的应用程序启动了这项服务通常是因为有人点击了连接按钮。
2.系统启动服务,因为始终在线VPN已打开。
系统通过调用onStartCommand()在后台启动服务。

不过,Android对8.0(API Level 26)以上版本的后台应用有限制,如果您支持这些API Level,则需要通过调用Service.startForeground()将服务过渡到前台

4.停止服务

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

永不关机

实现Always-on功能的步骤与上面的步骤并不遥远。使用本节了解更多信息,您也可以使用此project来帮助您。该项目是在Java中,而不是Kotlin,但它可以帮助给予您如何在应用中实现它的一般想法。

  • 编辑 *

要实现Always-on功能,您可以使用来自Github的project!它完全是Kotlin,最后一次更新是1小时前(在撰写本文时)。您可以找到ForegroundService.ktheremanifesthere

相关问题