如何使用sqlite数据设置多个警报?

时间:2018-07-16 16:01:23

标签: android broadcastreceiver alarmmanager

我是android的新手,在这里我正在为我的工作知识开发一个警报应用程序。

我已经完成以下工作:

  • 创建警报并将其存储到sqlite数据库中。
  • 获取所有状态为活动的警报。

我已经尝试了许多stackoverflow帖子及其解决方案以及其他与我的疑问有关的博客帖子,但是我无法解决我的问题。

我的问题是我从sqlite数据库中收到了一些之前设置的警报时间,我想在存储的时间上设置所有警报。

这里我不知道如何设置。

谁能帮我设置多个警报。

我真的在寻找某人的帮助来学习和体验这些东西,请帮助我。

谢谢。

1 个答案:

答案 0 :(得分:0)

您还需要Alarm Manager和Pending Intent。

for (int i = 0; i < ActivemyAlarms.size(); i++) {

            int mHour = 0,mMin=0;
            String amPm = null;
            int mAlarmId = ActivemyAlarms.get(i).getALARM_ID(); //each alarm has an unique Id ,for differentiate one from another
            String mAlarmTime = ActivemyAlarms.get(i).getALARM_TIME(); // alarm time (11:12:AM)


            if (!(mAlarmTime == null)) {
                String mtime = mAlarmTime;  // alarm time format is 12hr format (ex : 11:12:AM)
                String[] time = mtime.split(":");
                mHour = Integer.parseInt(time[0].trim()); // get 11 hour
                mMin = Integer.parseInt(time[1].trim()); // get 12 min
                amPm = ((time[2].trim()));
            }
            Calendar calendar = Calendar.getInstance();
            calendar.set(calendar.HOUR_OF_DAY, amPm!=null && amPm.equalsIgnoreCase("pm")?(mHour+12):mHour);
            calendar.set(calendar.MINUTE, mMin);
            calendar.set(calendar.SECOND, 0);
            calendar.set(calendar.MILLISECOND, 0);

            Intent intent = new Intent(this,AlarmReceiver.class); //calling my Alarm service class which plays a music on the specific time
            final int _id = (int) System.currentTimeMillis(); // get calendar instance

            //Use Alarm manager and Pending Intent

            AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
            PendingIntent alarmIntent = PendingIntent.getBroadcast(context, mAlarmId, intent, 0);

            alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), alarmIntent);

}

并取消任何警报,例如:alarmManager.cancel(PendingIntent)

Intent intent = new Intent(this,AlarmReceiver.class);
PendingIntent alarmIntent = PendingIntent.getBroadcast(context, mAlarmId, intent, 0);
alarmManager.cancel(alarmIntent);