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