获取Android警报信息

时间:2015-05-14 07:53:59

标签: java android android-intent

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

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();}}

问题:我怎样才能让每个意图都在&#34; info&#34; / PutExtra上,或以其他方式告诉哪一个被激活?

1 个答案:

答案 0 :(得分:0)

*发现问题* 我离开了 AlarmListSortAndSetNext 方法,该方法最初应该用于管理下一个警报。我不再需要使用此方法,因为我创建了多个Intent。循环中的某些东西可能创建了多个 putExtra (); 谢谢。