如何与子窗口通信?HarmonyOS 鸿蒙Next

如何与子窗口通信?HarmonyOS 鸿蒙Next 【设备信息】 Mate60
【API版本】 Api12
【DevEco Studio版本】 5.0.5.300
【问题描述】

如何与子窗口通信,类似于语音通话的功能,在语音通话页面打开子窗口,需要把当前语音通话页面中待接听以及通话中的状态传给子窗口。另外会跳转到聊天页面,页面变更之后,语音通话页面的监听接口如何处于运行状态?

2 回复

在HarmonyOS鸿蒙Next中,与子窗口通信可以通过WindowAbility的API实现。使用Window类的postMessage方法可以向子窗口发送消息,子窗口通过Window类的onMessage方法接收消息。父窗口可以通过Window类的getSubWindow方法获取子窗口的实例,然后调用postMessage发送消息。子窗口可以通过Window类的onMessage监听父窗口发送的消息,并通过postMessage向父窗口回复消息。具体实现如下:

  1. 父窗口发送消息:
let subWindow = window.getSubWindow('subWindowId');
subWindow.postMessage({ data: 'Hello, sub window!' });
  1. 子窗口接收消息并回复:
window.onMessage = (message) => {
    console.log('Received message from parent:', message.data);
    window.postMessage({ data: 'Hello, parent window!' });
};

通过这种方式,父窗口和子窗口可以实现双向通信。

回到顶部