Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以静态方式注销广播接收器-Android_Java_Android_Static_Broadcastreceiver - Fatal编程技术网

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

Java 以静态方式注销广播接收器-Android,java,android,static,broadcastreceiver,Java,Android,Static,Broadcastreceiver,我想在活动a中注册广播接收器,然后在活动B中取消注册。 我有一个静态代码: private static BroadcastReceiver smsReceiver; public static void registerSMSBR(Context context){ smsReceiver = new SmsReceiver(); IntentFilter filter = new IntentFilter(); filter.addA

我想在活动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(上下文)
在活动B中

问题是“unregisterSMSreceiver(context)”没有注销,onReceive仍然在新的sms消息上运行


我做错了什么

在这两种情况下,您可能都使用活动作为上下文。因此,在一个上下文中注册一个接收者。并在另一个(没有的地方)注销。尝试在这两种情况下都使用
activity.getApplicationContext()

这是个好主意。但我已经在这两种语言中使用了getApplicationContext()