Cordova Broadcaster 插件未向 index.js 发送意图

问题描述 投票:0回答:1

我正在开发一个项目,其中使用 Cordova Broadcaster 将 action.USER_PRESENT 意图从 myBroadcastReceiver.java 文件发送到我的 Index.js。我知道 myBroadcastReceiver.java 文件从 Android 接收了意图,但它没有发送到我的 index.js 文件。

这是myBroadcastReceiver.java代码:


import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.provider.Settings;
import android.widget.Toast;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import android.util.Log;


public class myBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        LocalBroadcastManager.getInstance(context).sendBroadcastSync(intent);
    }

}

这是我的index.js代码:

window.broadcaster.addEventListener("android.intent.action.USER_PRESENT", function (e) {
         console.log("com.android.action.SEND_SCAN_RESULT registered");
    });

我目前使用的是 LocalBroadcastManager 1.0.0,但在 Androidx.core 版本 1.10.1 上使用 Android API-33。

想法?

感谢您的帮助!

cordova android-intent cordova-plugins localbroadcastmanager
1个回答
0
投票

您似乎正在尝试使用 Cordova Broadcaster 将意图从 Java BroadcastReceiver 发送到 JavaScript index.js。但是,您使用

LocalBroadcastManager
发送广播,这意味着在应用程序的组件内发送广播,而不是跨越 Cordova 本机到 Web 边界。

要在 Cordova 插件中将意图从 Java 发送到 JavaScript,您应该使用 Cordova 的插件架构。您需要修改插件的 Java 代码,以便在收到意图时调用 JavaScript 回调。这是一个简化的示例:

在你的 myBroadcastReceiver.java 中:

import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;

public class MyBroadcastReceiverPlugin extends CordovaPlugin {

    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
        if (action.equals("sendBroadcast")) {
            // Handle the intent processing here
            
            // Send the intent to JavaScript
            webView.sendJavascript("cordova.fireDocumentEvent('userPresent');");
            return true;
        }
        return false;
    }
}

在你的index.js中:

document.addEventListener("userPresent", function (e) {
    console.log("User present event received in JavaScript");
});

此示例演示了如何使用 Cordova 的插件机制来桥接 Java 代码和 JavaScript 代码之间的通信。确保根据插件的结构和要求调整此代码。

请记住在 Java 代码中正确处理插件初始化和错误情况。

© www.soinside.com 2019 - 2024. All rights reserved.