0

我制作了一个可以设置闹钟的应用程序。它实际上有效,但只有一次。我需要做不止一次。我试图做一个课程表警报。

例如我星期一七点有课,所以我需要每周一开始闹钟。但我星期二还有另一节课,也必须这样做。

这是我的代码 pd-> rqs1 = 1

Calendar cal = Calendar.getInstance();
        cal.setTimeInMillis(System.currentTimeMillis());
        cal.set(Calendar.HOUR_OF_DAY, horai); // i put the hour with the interface
        cal.set(Calendar.MINUTE,minutoi);///
       cal.set(Calendar.DAY_OF_WEEK,dias.getSelectedItemPosition()+1);
        cal.add(Calendar.SECOND, 2);



        Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
        intent.putExtra("name", curso); // i put the name of the curso
      PendingIntent pendingIntent =
               PendingIntent.getBroadcast(getBaseContext(),
                      RQS_1, intent, PendingIntent.FLAG_ONE_SHOT);


    AlarmManager alarmManager =
            (AlarmManager)getSystemService(Context.ALARM_SERVICE);


    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
            cal.getTimeInMillis(), 24 * 7 * 60 * 60 * 1000 , pendingIntent);`

所以,我一直在寻找如何去做。请帮我 。谢谢

4

2 回答 2

0

1-替换这个

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
        cal.getTimeInMillis(), 24 * 7 * 60 * 60 * 1000 , pendingIntent);`

有了这个:

alarmManager.set(AlarmManager.RTC_WAKEUP,
            cal.getTimeInMillis(), 24 * 7 * 60 * 60 * 1000 , pendingIntent);

2-替换这个

PendingIntent pendingIntent =
           PendingIntent.getBroadcast(getBaseContext(),
                  RQS_1, intent, PendingIntent.FLAG_ONE_SHOT);

有了这个:

PendingIntent pendingIntent =
           PendingIntent.getBroadcast(getBaseContext(),
                  RQS_1, intent, PendingIntent.FLAG_UPDATE_CURRENT );

3-在里面添加这个onReceive

  Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
    intent.putExtra("name", curso); // i put the name of the curso
  PendingIntent pendingIntent =
           PendingIntent.getBroadcast(getBaseContext(),
                  RQS_1, intent, PendingIntent.FLAG_UPDATE_CURRENT );


AlarmManager alarmManager =
        (AlarmManager)getSystemService(Context.ALARM_SERVICE);


alarmManager.set(AlarmManager.RTC_WAKEUP,
        cal.getTimeInMillis(), 24 * 7 * 60 * 60 * 1000 , pendingIntent);`
于 2016-07-12T20:17:51.720 回答
0

尝试使用FLAG_UPDATE_CURRENT代替FLAG_ONE_SHOT

还要确保在设备重启后重新安排警报。是一个很好的例子。

于 2016-07-12T17:43:46.370 回答