繁体   English   中英

以静态方式注销广播接收器-Android

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM