vpn启动添加参数testParamKey。
let want: Want = {
deviceId: "",
bundleName: "com.example.testvpn",
abilityName: "MyVpnExtAbility",
parameters: {
"testParamKey" : 'test info'
}
};
在vpn服务中获取参数。
onCreate(want: Want) {
const params = want.parameters
if (params) {
Object.keys(params).forEach(key => {
console.log(`Key: ${key}, Value: ${params[key]}`);
});
}
}
日志如下:
08-14 12:22:12.729 42907-42907 A03D00/JSAPP pid-42907 I Key: component.startup.newRules, Value: true
08-14 12:22:12.729 42907-42907 A03D00/JSAPP pid-42907 I Key: moduleName, Value: entry
08-14 12:22:12.729 42907-42907 A03D00/JSAPP pid-42907 I Key: ohos.aafwk.param.callerAbilityName, Value:
08-14 12:22:12.729 42907-42907 A03D00/JSAPP pid-42907 I Key: ohos.aafwk.param.callerBundleName, Value: com.huawei.hmos.vpndialog
08-14 12:22:12.729 42907-42907 A03D00/JSAPP pid-42907 I Key: ohos.aafwk.param.callerPid, Value: 42843
08-14 12:22:12.729 42907-42907 A03D00/JSAPP pid-42907 I Key: ohos.aafwk.param.callerToken, Value: 537129598
08-14 12:22:12.729 42907-42907 A03D00/JSAPP pid-42907 I Key: ohos.aafwk.param.callerUid, Value: 20020142
want传不了参数,有专门传参数的接口。目前通过startVpnExtensionAbility启动三方vpn时,在onCreate中不会接收parameters参数。若想要与vpn进程进行通信,可采用以下方法:
1、在vpn进程启动后,调用UIAbilityContext.connectServiceExtensionAbility与vpn进程进行链接,再在其中进行通信。同时可在onConnect中获取到从want中传入的parameters参数。
具体请参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-inner-application-uiabilitycontext-V5\#uiabilitycontextconnectserviceextensionability
2、将ip和端口存入首选项、数据库等,等到vpn初始化时再从中读取,具体用法请参考首选项:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-data-preferences-V5