广播接收器无法通过服务工作
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"));
我正在尝试在我的服务中使用 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"));