1# @ohos.net.vpnExtension (VPN 增强管理)(系统接口)
2
3三方VPN管理模块,支持三方VPN的启动和停止功能。
4三方VPN是指由第三方提供的VPN服务,它们通常提供更多的功能和更广泛的网络连接选项,包括更多的安全和隐私功能,以及更全面的定制选项。
5
6> **说明:**
7> 本模块首批接口从 API version 11 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8> 当前页面仅包含本模块的系统接口,其他公开接口参见[@ohos.net.vpnExtension (VPN 增强管理)](js-apis-net-vpnExtension.md)
9
10## 导入模块
11
12```js
13import { vpnExtension } from '@kit.NetworkKit';
14```
15
16
17## vpnExtension.setAlwaysOnVpnEnabled
18
19setAlwaysOnVpnEnabled(enable: boolean, bundleName: string): Promise\<void>
20
21设置设备的启用/禁用always on VPN模式。
22
23**系统接口**:此接口为系统接口。
24
25**需要权限**:ohos.permission.MANAGE_VPN
26
27**系统能力**:SystemCapability.Communication.NetManager.Vpn
28
29**模型约束**:此接口仅可在Stage模型下使用。
30
31**参数:**
32
33| 参数名     | 类型    | 必填 | 说明                                                    |
34| ---------- | ------- | ---- | ------------------------------------------------------- |
35| enable     | boolean | 是   | always on启用或禁用。                                   |
36| bundleName | string  | 是   | 设置了always on vpn的包名,通常指三方应用的bundleName。 |
37
38**返回值:**
39
40| 类型           | 说明                    |
41| -------------- | ----------------------- |
42| Promise\<void> | 无返回值的Promise对象。 |
43
44**错误码:**
45
46| 错误码 ID | 错误信息                                 |
47| --------- | ---------------------------------------- |
48| 201       | Permission denied.                       |
49| 202       | Non-system applications use system APIs. |
50| 401       | Parameter error.                         |
51
52**示例:**
53Stage 模型示例:
54
55```ts
56import { vpnExtension } from '@kit.NetworkKit';
57import { Want } from '@kit.AbilityKit';
58import { BusinessError } from '@kit.BasicServicesKit';
59
60let want: Want = {
61  deviceId: "",
62  bundleName: 'com.example.myvpndemo',
63  abilityName: 'MyVpnExtAbility',
64};
65
66vpnExtension.setAlwaysOnVpnEnabled(true, want.bundleName).then(() => {
67  console.info('setAlwaysOnVpnEnabled success.');
68}).catch((err : BusinessError) => {
69  console.error('setAlwaysOnVpnEnabled fail, err-> ${JSON.stringify(err)}');
70});
71```
72
73## vpnExtension.isAlwaysOnVpnEnabled
74
75isAlwaysOnVpnEnabled(bundleName: string): Promise\<boolean>
76
77获取always on VPN开关状态。
78
79**系统接口**:此接口为系统接口。
80
81**需要权限**:ohos.permission.MANAGE_VPN
82
83**系统能力**:SystemCapability.Communication.NetManager.Vpn
84
85**模型约束**:此接口仅可在Stage模型下使用。
86
87**参数:**
88
89| 参数名     | 类型   | 必填 | 说明                                                    |
90| ---------- | ------ | ---- | ------------------------------------------------------- |
91| bundleName | string | 是   | 设置了always on vpn的包名,通常指三方应用的bundleName。 |
92
93**返回值:**
94
95| 类型              | 说明                           |
96| ----------------- | ------------------------------ |
97| Promise\<boolean> | 返回应用alway on vpn开关状态。 |
98
99**错误码:**
100
101| 错误码 ID | 错误信息                                 |
102| --------- | ---------------------------------------- |
103| 201       | Permission denied.                       |
104| 202       | Non-system applications use system APIs. |
105| 401       | Parameter error.                         |
106
107**示例:**
108Stage 模型示例:
109
110```ts
111import { vpnExtension } from '@kit.NetworkKit';
112import { Want } from '@kit.AbilityKit';
113import { BusinessError } from '@kit.BasicServicesKit';
114
115let want: Want = {
116  deviceId: "",
117  bundleName: 'com.example.myvpndemo',
118  abilityName: 'MyVpnExtAbility',
119};
120
121vpnExtension.isAlwaysOnVpnEnabled(want.bundleName).then((data : boolean) => {
122  console.info('isAlwaysOnVpnEnabled success.');
123}).catch((err : BusinessError) => {
124  console.error('setAlwaysOnVpnEnabled fail, err-> ${JSON.stringify(err)}');
125});
126```
127
128## vpnExtension.updateVpnAuthorizedState
129
130updateVpnAuthorizedState(bundleName: string): boolean
131
132更新VPN对话框授权信息。
133
134**系统接口**:此接口为系统接口。
135
136**需要权限**:ohos.permission.MANAGE_VPN
137
138**系统能力**:SystemCapability.Communication.NetManager.Vpn
139
140**模型约束**:此接口仅可在Stage模型下使用。
141
142**参数:**
143
144| 参数名     | 类型   | 必填 | 说明                                             |
145| ---------- | ------ | ---- | ------------------------------------------------ |
146| bundleName | string | 是   | 应用弹框授权的包名,通常指三方应用的bundleName。 |
147
148**返回值:**
149
150| 类型    | 说明                                        |
151| ------- | ------------------------------------------- |
152| boolean | 返回值用来判断是否成功更新vpn弹框授权状态。 |
153
154**错误码:**
155
156| 错误码 ID | 错误信息                                 |
157| --------- | ---------------------------------------- |
158| 201       | Permission denied.                       |
159| 202       | Non-system applications use system APIs. |
160| 401       | Parameter error.                         |
161
162**示例:**
163Stage 模型示例:
164
165```ts
166import { vpnExtension } from '@kit.NetworkKit';
167import { Want } from '@kit.AbilityKit';
168
169let want: Want = {
170  deviceId: "",
171  bundleName: 'com.example.myvpndemo',
172  abilityName: 'MyVpnExtAbility',
173};
174
175let result: boolean = vpnExtension.updateVpnAuthorizedState(want.bundleName);
176console.log("Result: "+ result);
177```
178
179