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
阅读 553
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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进