簡體   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