android - 来自 Android Java 代码的 ionic 电容器处理事件

标签 android reactjs ionic-framework capacitor

我正在使用 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/

相关文章:

java - 如何使用 3 个不同的文件选择器获取文件的 URI?

javascript - 防止 ReactJS 中的多个按钮颜色激活

javascript - 还有其他方法可以获取 map 的 map 吗?

android - 在 Android 手机上查看 ionic 应用程序时无法查看图像

html - 列表中的 ionic 元素不是全宽

android - 在 React Native 中运行简单初始化的应用程序时出现错误

android - 如何列出额外的外部存储文件夹(挂载点)?

java - Android firebase getValue() 不工作

reactjs - react : OnChange for drop down return me the entire <select></select> tag

php - 如何将我的 ionic 应用程序与 MAMP MYSQL 连接?