我正在开发一个项目,其中使用 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 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 代码中正确处理插件初始化和错误情况。