广播接收器未激活

Broadcast Receiver is not activated

从外部通信接收到数据后,我想通过广播发送它以便在屏幕上打印它。

这是我的服务中将数据发送到广播中的部分:

Intent intent = new Intent("CodeFilter_MemoryRead"); 
intent.putExtra("data_memory_read_from_hce", MemoryStringValue);
this.sendBroadcast(intent);

以及用于接收它的 activity:

@Override
protected void onStart() {
    super.onStart();
    final IntentFilter hceNotificationsFilter = new IntentFilter();
    hceNotificationsFilter.addAction("CodeFilter");
    registerReceiver(hceNotificationsReceiver, hceNotificationsFilter);
}    

final BroadcastReceiver hceNotificationsReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String hcedata = intent.getExtras().toString();
        RealMessageReceived.setText(hcedata);
        Log.i(TAG, "Broadcast listener activated");
        }
};

我遇到的问题是,即使在命令 this.sendBroadcast(intent) 之后,我的 BroadcastReceiver 也从未被激活。你能帮帮我吗?

您创建 Intent 所用的字符串与您添加到 IntentFilter 的字符串不匹配。它们需要相同才能让接收者接收到意图。以下代码应该有效:

Intent intent = new Intent("CodeFilter_MemoryRead"); 
intent.putExtra("data_memory_read_from_hce", MemoryStringValue);
this.sendBroadcast(intent);

@Override
protected void onStart() {
    super.onStart();
    final IntentFilter hceNotificationsFilter = new IntentFilter();
    hceNotificationsFilter.addAction("CodeFilter_MemoryRead");
    registerReceiver(hceNotificationsReceiver, hceNotificationsFilter);
}    

final BroadcastReceiver hceNotificationsReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String hcedata = intent.getExtras().toString();
        RealMessageReceived.setText(hcedata);
        Log.i(TAG, "Broadcast listener activated");
        }
};