HarmonyOS 鸿蒙Next startVpnExtensionAbility传值wan解析不到parameters参数值

发布于 1周前 作者 h691938207 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 三方vpn传值问题:startVpnExtensionAbility传值want,VpnExtensionAbility onCreate中为何解析不到parameters参数值

调用 startVpnExtensionAbility 传值want

let want : Want = {
deviceId: “”,
bundleName: “xxx”,
abilityName: “MyVpnExtAbility”,
parameters:{
// 自定义信息
param1: ‘来自AbilityTest页面的param1’,
param2: 123
}
}

, VpnExtensionAbility oncreate中解析不到 parameters,这是为啥,一直报undefined,、、

console.error(’----onCreate—,参数是${want.parameters?.param1}’);

下面转一下string,

console.error(’----onCreate—,参数:
${ want.parameters}’)

输出{“component.startup.newRules”:true,“moduleName”:“entry”,“ohos.aafwk.param.callerAbilityName”:"",“ohos.aafwk.param.callerBundleName”:“com.huawei.hmos.vpndialog”,“ohos.aafwk.param.callerPid”:42653,“ohos.aafwk.param.callerToken”:537271568,“ohos.aafwk.param.callerUid”:20020158},,

咋这么奇怪,都是按want文档去解析的啊


更多关于HarmonyOS 鸿蒙Next startVpnExtensionAbility传值wan解析不到parameters参数值的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

10 回复

请教下,startVpnExtensionAbility后有弹窗但无法拉起Ability,onCreate都不走的。是module.json5配置的不对吗,这个‘vpn’是我自己加的

cke_1833.png

更多关于HarmonyOS 鸿蒙Next startVpnExtensionAbility传值wan解析不到parameters参数值的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


点击这个type,找到那个SDK对应目录下的moudle.json文件路径,去里面改type类型中增加vpn字段,保存,然后重新打开开发工具就可以了(有些时候遇到了改了没生效的情况); 还有一种可能是你的ablity路径没写对,名字没一致也有可能;

题主解决了么,我也遇到了相同的问题

用全局文件缓存了,读写文件,或者进程间通信试试看吧,官方这个属实有点坑,得开关开vpn,才会有want值传入,走的onrequest方法可以读到,害

你好,你最后面贴的那些参数是 want 自带的,你看文档里面的 parameters 参数的说明https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-app-ability-want-V5#%E5%B1%9E%E6%80%A7

然后我试了下你的 want 写法,可以读到 parameters 呀。方面把你的 dmeo 贴上来一起看看不

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

额,别拿UIability试,这个三方vpn是由于会拉起授权弹窗,所以导致这个want不透传了,demo就是官方自己提供的demo,这个vpn功能不完善好些问题,好多人都遇到了的 https://gitee.com/openharmony/applications_app_samples/tree/master/code/BasicFeature/Connectivity/VPN

确实用startVpnExtensionAbility启动三方vpn时,在onCreate中接收不到parameters参数。找到了两个方法,可以解决 1、在vpn进程启动后,调用UIAbilityContext.connectServiceExtensionAbility与vpn进程进行链接,再在其中进行通信。同时可在onConnect中获取到从 want中传入的parameters参数。具体请参考: https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-ability-kit/js-apis-inner-application-uiAbilityContext.md#uiabilitycontextconnectserviceextensionability 2、将参数存入首选项、数据库等,等到vpn初始化时再从中读取,具体用法请参考首选项:的 https://docs.openharmony.cn/pages/v5.0/zh-cn/application-dev/reference/apis-arkdata/js-apis-data-preferences.md

是的,我后面用的数据库,可以读写文件,可以进程通信,只是没有传want值的简单,但是官方这块有bug,开关开vpn,才会有want值传入,走的onrequest方法可以读到

在HarmonyOS鸿蒙Next系统中,关于三方VPN传值问题,特别是startVpnExtensionAbility方法传值want,而在VpnExtensionAbilityonCreate方法中解析不到parameters参数值的情况,通常与want参数的构建和接收方式有关。

确保在调用startVpnExtensionAbility时,want参数正确设置了所有需要的键值对。want应使用PutElement方法添加参数,例如:

Want want;
want.PutElement("key", "value");
startVpnExtensionAbility(want);

VpnExtensionAbilityonCreate方法中,接收参数应使用want对象的GetElement方法,确保键名一致:

String value = want.GetElement("key");

如果参数依然无法正确解析,检查以下几点:

  1. 确认key值在发送和接收时完全一致,包括大小写。
  2. 确保want对象在调用startVpnExtensionAbility前未被修改或重置。
  3. 检查是否有权限问题或系统限制导致参数传递失败。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部