2017-06-22 80 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; 
    } 
} 
相关问题