[英]Unregister Broadcast Receiver in a static way - Android
我想在活动A中注册一个广播接收器,并在活动B中注销它。我有下面的静态代码:
private static BroadcastReceiver smsReceiver;
public static void registerSMSBR(Context context){
smsReceiver = new SmsReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("SMS_RECEIVED");
context.registerReceiver(smsReceiver, filter);
}
public static void unregisterSMSreceiver(Context context){
if(smsReceiver != null){
context.unregisterReceiver(smsReceiver);
}
}
我已经添加了正确的权限,并且正在调用registerSMSBR(context);
在活动A中并unregisterSMSreceiver(context);
在活动B中。
问题是“ unregisterSMSreceiver(context)”不会取消注册,并且onReceive仍在新的SMS消息上运行。
我究竟做错了什么?
在这两种情况下,您可能都将活动用作上下文。 因此,您在一个上下文中注册了一个接收者。 并在另一个(不存在的地方)注销。 在两种情况下都尝试使用activity.getApplicationContext()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.