广播接收器无法通过服务工作

Broadcast reciever not working from service

我正在尝试在我的服务中使用 BroadcastReceiver,但它无法正常工作。

我在 activity 的 onCreate 中开始我的服务。然后在服务 onCreate 中调用以下内容来注册广播接收器:

    IntentFilter filter = new IntentFilter();
    registerReceiver(DataUpdateReceiver, filter);

这是我要注册的广播接收器:

    private BroadcastReceiver DataUpdateReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {

        Toast.makeText(context, "Test", Toast.LENGTH_LONG).show();

    }
};

然后在 Activity 我试图调用它的其他地方,因此将显示 Toast 消息。

            Intent i = new Intent();
            sendBroadcast(i);

但是没有显示Toast,我也试过登录但是什么也没有显示。如果有人可以帮助我解决这个问题,ty。

在我看来,您必须指定触发 onReceive() 方法的操作(或多个操作)。这样的事情可能对你有帮助:

IntentFilter filter = new IntentFilter("some_action");
registerReceiver(DataUpdateReceiver, filter);

...

Intent i = new Intent("some_action");
sendBroadcast(i);

在 class

之上声明
public final static String MY_RECEIVER_START = "com.yourcompanyname.appname.MY_RECEIVER_START";

private Radio radio;

在服务构造函数中

    //Initiate our receiver
    radio = new Radio();

    //Activate our recevier
    context.registerReceiver(radio, new IntentFilter(MY_RECEIVER_START));

同样在服务中,创建接收器 class 和显示 toast 的方法

/**
 * Receiver Class
 * This setup checks for the incoming intent action to be able to
 * attach more messages to one receiver.
 */
private class Radio extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {

        if (intent.getAction().equals(MY_RECEIVER_START)){
            //show toast


        }

    }
}

从应用程序中的任何位置向我们的收音机发送消息后

context.sendBroadcast(new Intent("com.yourcompanyname.appname.MY_RECEIVER_START"));