2***@qq.com
2***@qq.com
  • 发布:2025-10-14 04:22
  • 更新:2025-10-16 02:14
  • 阅读:209

【报Bug】鸿蒙桌面小部件postCardAction无法调用EntryAbility中的方法

分类:鸿蒙Next

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win11

HBuilderX类型: 正式

HBuilderX版本号: 4.82

手机系统: HarmonyOS NEXT

手机系统版本号: HarmonyOS 5.1.1

手机厂商: 华为

手机机型: p70 pro

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
   ```  Image($r('app.media.refresh'))  
    .width(16)  
    .height(16)  
    .margin(8)  
    .onClick(() => {  
      postCardAction(this, {  
        action: 'call',  
        abilityName: 'EntryAbility',  
        params: {  
          formId: this.formId,  
          method: 'updateStorageInfoCall',  
        }  
      })  
    }) ``` 

操作步骤:

用uniapp引入鸿蒙原生桌面小部件

预期结果:

小部件可以正常刷新

实际结果:

小部件刷新的时候报错了

bug描述:

  Image($r('app.media.refresh'))  
    .width(16)  
    .height(16)  
    .margin(8)  
    .onClick(() => {  
      postCardAction(this, {  
        action: 'call',  
        abilityName: 'EntryAbility',  
        params: {  
          formId: this.formId,  
          method: 'updateStorageInfoCall',  
        }  
      })  
    })比这个刷新小部件的按钮 就会提示这个错误  

04:08:03.449 Callee onRemoteMessageRequest code [number 1]
04:08:03.453 Use new start up rule, check caller permission.
04:08:03.459 Callee onRemoteMessageRequest code proc
04:08:03.459 Callee onRemoteMessageRequest method [updateBatteryInfoCall]
04:08:03.475 Callee onRemoteMessageRequest error, get func is undefined

2025-10-14 04:22 负责人:无 分享
已邀请:
2***@qq.com

2***@qq.com (作者)

求助解决!

DCloud_UNI_OttoJi

DCloud_UNI_OttoJi - 日常回复 uni-app/x 问题,如果艾特我没看到,请主动私信

这个方法并不特殊,是不是 module.json 里没有配置,请提供复现工程和操作步骤,提供更多信息,有助于定位和解答你的问题。

  • 2***@qq.com (作者)

    那个鸿蒙官方的小部件示例包私发您了 ,直接在uniapp中的harmony-configs导入entry文件 然后运行到真机 添加小部件 然后点击右上角的刷新就报错了。

    2025-10-14 12:15

  • DCloud_UNI_OttoJi

    回复 2***@qq.com: 你是把整个 entry 都导进去了吗?

    2025-10-14 16:29

  • 2***@qq.com (作者)

    回复 DCloud_UNI_OttoJi: 是的

    2025-10-14 16:58

2***@qq.com

2***@qq.com (作者)

。。。

2***@qq.com

2***@qq.com (作者)

定位到了 ,就是因为uniapp鸿蒙编译的时候会重置EntryAbility.ets 所以自定义的方法不能写到这个里面。可以使用其他替代方案。

  • DCloud_UNI_OttoJi

    ok,不建议放整个 entry,默认的入口是 uniapp 继承并重写的,建议需要什么就修改什么。

    2025-10-16 11:18

  • 2***@qq.com (作者)

    回复 DCloud_UNI_OttoJi: 你好,现在我在EntryAbility.ets 中自定义方法 编译都会被覆盖,像鸿蒙桌面小部件的call和route事件都需要在EntryAbility.ets 写方法,这个EntryAbility.ets不能自己来定义吗?

    2025-10-16 11:55

  • DCloud_UNI_OttoJi

    回复 2***@qq.com: 参考这个 https://uniapp.dcloud.net.cn/tutorial/harmony/runbuild.html#config-dir ,编译产物重新放回到 configs 里。或者你可以编写 vite 插件每次 build 之后操作 fs 修改指定文件。经过我测试编写 ets 组件使用 postCardAction 是正常的

    2025-10-16 12:01

  • 2***@qq.com (作者)

    回复 DCloud_UNI_OttoJi: ok

    2025-10-16 12:12

  • 2***@qq.com (作者)

    回复 DCloud_UNI_OttoJi: 编译产物(EntryAbility.ets )修改之后再放回harmony-configs, 依然会被覆盖。

    2025-10-16 14:14

  • DCloud_UNI_OttoJi

    回复 2***@qq.com: 可能是你放错了,或者目前编译不支持你这种写法。你可以描述明确你的做法

    2025-10-16 14:45

  • 2***@qq.com (作者)

    回复 DCloud_UNI_OttoJi: 存放路径: harmony-configs\entry\src\main\ets\entryability\EntryAbility.ets 编译后的路径\unpackage\dist\dev\app-harmony\entry\src\main\ets\entryability\EntryAbility.ets 完全一致,那看来目前编译不支持这种写法,总会被替换。

    2025-10-17 09:39

要回复问题请先登录注册