Отмените регистрацию Broadcast Receiver статическим способом - Android - PullRequest
2 голосов
/ 20 февраля 2011

Я хотел бы зарегистрировать приемника вещания в Деятельности 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); в деятельности А и unregisterSMSreceiver(context); в занятии Б.

Проблема в том, что «unregisterSMSreceiver (context)» не отменяет регистрацию, а onReceive по-прежнему запускается для нового смс-сообщения.

Что я делаю не так?

1 Ответ

1 голос
/ 20 февраля 2011

Может быть, вы используете действия в качестве контекста в обоих случаях. Итак, вы регистрируете получателя в одном контексте. и незарегистрировать его в другом (там, где его нет). Попробуйте использовать activity.getApplicationContext() в обоих случаях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...