1

廣播接收機廣播接收器的onReceive()不叫

mBroadcastReceiver = object : BroadcastReceiver() { 
      override fun onReceive(context: Context, intent: Intent) { 

       Log.i(TAG,"contact list populate broadcast") 

       var action = intent.action 

       Log.v("Action is ",action) 
       when (action) { 
        GetContactListFromServer -> { 
         println("Get contact list") 


        } 
       } 

      } 
     } 

     val filter = IntentFilter(GetContactListFromServer) 
     this.registerReceiver(mBroadcastReceiver, filter) 

這是我如何發送廣播

val i = Intent(ContactListActivity.Obz.GetContactListFromServer) 
i.`package` = mApplicationContext?.getPackageName() 
mApplicationContext?.sendBroadcast(i) 

此代碼工作正常,直到昨晚。我無法調試出了什麼問題?

+1

確定'mApplicationContext?.sendBroadcast(i)'被調用時'mApplicationContext'不等於'null'嗎? – miensol

+0

是mApplicationContext不爲null @miensol –

回答

1

嘗試像這樣

在你的活動裏面的onCreate方法聲明

LocalBroadcastManager.getInstance(context).registerReceiver(MyBroadcastReceiver, new IntentFilter("MyFilter")); 

然後實現在活動

private final BroadcastReceiver MyBroadcastReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 

      String Action = intent.getStringExtra("Action"); 
      switch (Action){ 
       case "updatedata": 
        String message = intent.getStringExtra("message"); 
        String date_time = intent.getStringExtra("date_time"); 
        break; 

       default: 
        break; 
      } 
     } 
    }; 

的MyBroadcastReceiver發送廣播這樣

Intent intent = new Intent("MyFilter"); 
intent.putExtra("message", message); 
intent.putExtra("date_time", date_time); 
intent.putExtra("Action", "updatedata"); 
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);