我正在尝试在我的服务中使用BroadcastReceiver
,但它无法正常工作。
我在我的活动中在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没有显示,我也尝试过登录,但没有显示任何内容。如果有人可以帮我解决这个问题,那将会很感激。
答案 0 :(得分:1)
在我看来,您必须指定触发onReceive()
方法的操作(或操作)。这样的事情可能会对你有所帮助:
IntentFilter filter = new IntentFilter("some_action");
registerReceiver(DataUpdateReceiver, filter);
...
Intent i = new Intent("some_action");
sendBroadcast(i);
答案 1 :(得分:1)
在课堂上声明
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));
同样在服务中,创建接收器类和显示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"));