HarmonyOS 启动vpn服务,无法传递参数?

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
阅读 556
1 个回答

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