2017-06-22 99 views
0

我想發送值「從BroadcastReceiver到活動」。 我無法獲得「getIntExtra」。爲什麼?我想發送值「從BroadcastReceiver到活動」

MainActivity是「singleTask」。

源代碼。

public class TimerReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     intent.setClass(context,MainActivity.class); 
     intent.putExtra("ALARM_FLAG", 7); 
     // -> set 7. 
     PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
     try { 
      pendingIntent.send(); 
     } catch (PendingIntent.CanceledException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

public class MainActivity extends AppCompatActivity { 
    @Override 
    protected void onResume(){ 
     super.onResume(); 
     Intent intent = getIntent(); 
     int a = intent.getIntExtra("ALARM_FLAG", 0); 
     // -> This "a" is 0. why? 
    } 
} 

回答

0

首先,你需要註冊你的活動接收器,對於

private BroadcastReceiver updateReceiver; 

private void registerUpdateReciever() { 
    IntentFilter filter = new IntentFilter(); 
    filter.addAction("An unique string constant"); // eg: "broad_cast_filter_update_receiver" 
    if (updateReceiver == null) { 
     updateReceiver = new BroadcastReceiver() { 
      @Override 
      public void onReceive(Context context, Intent intent) { 
       if (intent.getAction() 
         .equalsIgnoreCase("An unique string constant")) { // "broad_cast_filter_update_receiver" 
        // get values from intent 
       } 
      } 
     }; 
     registerReceiver(updateReceiver, filter); 
    } 
} 

而在廣播接收機

try { 
    Intent intent = new Intent(); 
    // intent put desired values 
    intent.setAction("An unique string constant"); // "broad_cast_filter_update_receiver" 
    sendBroadcast(intent); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

和註銷REC eiver on onStop()回調或在onDestroy()活動的回調

@Override 
protected void onStop() { 
    super.onStop(); 
    if (updateReceiver != null) { 
     unregisterReceiver(updateReceiver); 
     updateReceiver = null; 
    } 
} 
相關問題