我正在使用 ionic react 器和电容器。我需要从 Android native 代码触发一个事件并从 JavaScript 处理它。这是我的测试代码:
在 MainActivity.java 中:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Initializes the Bridge
this.init(savedInstanceState, new ArrayList<Class<? extends Plugin>>() {{
// Additional plugins you've installed go here
// Ex: add(TotallyAwesomePlugin.class);
}});
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
bridge.triggerWindowJSEvent("MyPushEvent", "test");
}
}, 25000);
}
在 App.tsx 中
window.addEventListener("MyPushEvent", function (msg) {
console.log("Push Event: " + msg);
alert("Window Push Event: " + msg);
});
基本上,我在长时间延迟后在 onCreate 中调用 bridge.triggerWindowJSEvent,确保已添加客户端上的事件处理程序。但是,客户端没有任何反应。
请帮忙!
最佳答案
我认为不会以这种方式完成,因为 ionic 应用程序的重点是首先启动主要 Activity ,即主要 Activity ,在主要 Activity 午餐后,它开始启动启动 index.html 的方法,因此所有应用程序页面将在主要 Activity 中启动。 我之前为实现它所做的是制作 2 个处理程序,第一个是 post 延迟 1500 毫秒,其中将启动 index.html,另一个处理程序使用方法 post 而不是 postdelayed,因为 post 将被添加到因此,处理程序的队列将被添加到第一个后延迟处理程序中,因此在 2500 毫秒后应用程序启动后,cordova 中的 app.tsx 或 app.ts 将被启动,从而准备好接收事件,因此在这 2500 毫秒之后我们添加一个handler.post(..runnable ... 并在其中启动您的事件并在 app.tsx 中接收它。
关于android - 来自 Android Java 代码的 ionic 电容器处理事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61173179/