2015-05-14 129 views
2

Iv'e使用Intent和BroadcastReciever创建了多个警报,并将它们放置在Intent数组中。 对于Intent.PutExtra(“info”,string);稍后将显示为Toast,当警报激活时, 并给每个不同的requestCode。 但是,当添加多个警报时,Toast也会显示每个其他警报的信息。 MainActivity:获取Android警报信息

Intent newAlarmIntent = new Intent(this,AlarmReceiver.class); 
     newAlarmIntent.putExtra("info",editText.getText().toString()); 
     alarmsArray[alarmCounter]=newAlarmIntent; 
     alarm.AlarmListSortAndSetNext(gameArrayList, alarmArray, this,alarmCounter,alarmsArray[alarmCounter]); 

报警类别:

public void CreateNew (Context context, Long alarmTimeAsLong, int counter, Intent intent) 
{ 
PendingIntent pendingIntent; 
pendingIntent = PendingIntent.getBroadcast(context, counter, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
AlarmManager manager; 
manager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
manager.set(AlarmManager.RTC_WAKEUP, (alarmTimeAsLong),pendingIntent); 
Toast.makeText(context, "Alarm Set", Toast.LENGTH_SHORT).show(); 
} 

public void AlarmListSortAndSetNext (ArrayList<Game> gameArrayList,Long[] alarmArray,Context context,int alarmCounter, Intent intent) 
{ 
    Long SystemTimeAsLong = System.currentTimeMillis(); 
    //Sorting Long Array for NEXT ALARM 
    for (int i=0;i<10;i++) 
    {if(i<gameArrayList.size()){ 
      alarmArray[i] = gameArrayList.get(i).getDateAndTimeAsLong(); 
     } 
     else alarmArray[i]= 0L; 
     } 
    Arrays.sort(alarmArray); 
    //Setting next ALARM by Long Size 
    for(int i=0;i<10;i++) 
    { 
     if (alarmArray[i]>SystemTimeAsLong){ 
      CreateNew(context,alarmArray[i],alarmCounter,intent); 
      alarmCounter++;} 
    }} 

AlarmReceiver:

public class AlarmReceiver extends BroadcastReceiver{ 
@Override 
public void onReceive(Context context, Intent intent) 
{ 
    PowerManager pm = (PowerManager) context.getApplicationContext().getSystemService(Context.POWER_SERVICE); 
    PowerManager.WakeLock wakeLock = pm.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "TAG"); 
    wakeLock.acquire(); 
    String gameInfo= intent.getStringExtra("info"); 
    Toast.makeText(context, gameInfo, Toast.LENGTH_SHORT).show(); 
    MediaPlayer mp = MediaPlayer.create(context, R.raw.bipbip); 
    mp.start(); 
    wakeLock.release();}} 

问题:怎样才能让每一个意向有它的 “信息”/ PutExtra,或其他任何告诉哪一个被激活的方法?

回答

0

*发现问题* 我已经离开最初本来是要管理一个报警的AlarmListSortAndSetNext方法。由于我创建了多个Intents,因此我不再需要使用此方法。循环中的东西可能创建了多个putExtra(); 谢谢。