如何在android中设置警报

如何在android中设置警报,android,Android,我是android的新手 我正在开发一个祈祷应用程序。该功能是用户将设置一个时间,并在该特定时间播放整个月的祈祷 所以我是这样做的: for (int counterAlarm = 0; counterAlarm < spanDays; ++counterAlarm) { alarmPendingIntent = CreatePendingIntent(context, String.valueOf(100 + count

我是android的新手

我正在开发一个祈祷应用程序。该功能是用户将设置一个时间,并在该特定时间播放整个月的祈祷

所以我是这样做的:

for (int counterAlarm = 0; counterAlarm < spanDays; ++counterAlarm) {


            alarmPendingIntent = CreatePendingIntent(context,
                    String.valueOf(100 + counterAlarm));
            SetAlarmForDay(context, calendarMorningReminder,
                    alarmPendingIntent);
            calendarMorningReminder.add(Calendar.DAY_OF_MONTH, 1);
            sbRequestCodes.append(String.valueOf(100 + counterAlarm));
            sbRequestCodes.append(";");
        }
所以我有两个问题:

在android中,注册所有30个警报已经足够好了。还是有更好的方法来解决这个问题

我们的应用程序与android gingerbread向后兼容,因此我们对更高版本使用了setExact方法,而对所有其他较低版本使用了set方法。这种方法够神用吗


请帮助。

我没有立即看到您的代码中有问题或错误。你有什么问题吗,或者你只是问你的代码是否遵循推荐的实践标准?我认为它看起来不错,我没有看到任何错误的部分。@Knossos-不,警报被触发了,我关心的是我的方法是好是坏,或者有更好的方法。@BhavdipPathar-更新我的答案,你认为这种方法很好,有30个注册警报吗?你的方法很好。但是,你会想做30天以上,对吗?你可能每天都需要祈祷提醒?在这种情况下,您应该在5月7日注册。每次检查当前注册的数量。如果登记的报警少于7个,则登记更多报警,直到有7个。
private static PendingIntent CreatePendingIntent(Context context,
            String requestCode) {
        Intent intent = new Intent(context, ApplicationBroadcastReceiver.class);
        intent.setAction(Constants.INTENT_ACTION_ALARM_RAISED);

        return PendingIntent.getBroadcast(context,
                Integer.parseInt(requestCode), intent,
                PendingIntent.FLAG_UPDATE_CURRENT);
    }

    @SuppressLint("NewApi")
    private static void SetAlarmForDay(Context context, Calendar calendar,
            PendingIntent pIntent) {

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

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
            alarmManager.setExact(AlarmManager.RTC_WAKEUP,
                    calendar.getTimeInMillis(), pIntent);
        } else {

            alarmManager.set(AlarmManager.RTC_WAKEUP,
                    calendar.getTimeInMillis(), pIntent);
        }
    }