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