无法设置多个提醒

时间:2013-01-17 08:21:22

标签: android android-alarms android-broadcast

我的应用中有一些功能,用户可以设置多个提醒。但问题是,当用户为提醒A和提醒B设置时间时,提醒B只能接听电话。这是提醒A的意图永远不会被打电话。简而言之,只有一个提醒一直在工作。这是设置提醒和呼叫广播的片段。

public void setAlarm(int dayValue, int monthValue, int yearValue, int hourValue, int minValue, String message, int pos){

            int ID = 1;
        calendar.set(yearValue, monthValue, dayValue, hourValue, minValue, 0);
        Calendar tempCal = Calendar.getInstance();
        Intent intent = new Intent(context,ReminderNissan.class);

        intent.putExtra("title",message);
        intent.putExtra("note",message);
        intent.putExtra("id", pos);

        Log.d("****Indide set alarm method*****", "PSOITION " + pos);

        if((tempCal.compareTo(calendar)==  -1) || (tempCal.compareTo(calendar)==  0)){
            try{
                db.open();
                db.setAlarm(id.get(pos).toString(), 1);
                db.close();
            }catch(SQLException exp){
                Log.d("SET ALARM OFF SQL EXCEPTION", exp.toString());
            }

            PendingIntent sender = PendingIntent.getBroadcast(context, ID,intent,0);

            am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);
            //Toast.makeText(context, "*** ALARM SET AT ***  " + pos, Toast.LENGTH_SHORT).show();

        }else{
            try{
                db.open();
                db.setAlarm(id.get(pos).toString(), 0);
                db.close();
            }catch(SQLException exp){
                Log.d("SET ALARM OFF SQL EXCEPTION", exp.toString());
            }
            Toast.makeText(context, "Time Has Alredy Passed. Set proper Time. ", Toast.LENGTH_SHORT).show();
        }
    }

2 个答案:

答案 0 :(得分:1)

我不完全确定,但可能是你要覆盖警报。

PendingIntent sender = PendingIntent.getBroadcast(context, ID,intent,0);

在您的情况下,ID参数始终为1。只是让它成为一个独特的ID,它应该没问题。

答案 1 :(得分:0)

你在哪里调用你的setAlarm-Method?我有一个应用程序,以类似的方式工作,每次警报激活时,我打开一个带有取消按钮的活动。按下按钮,它将再次设置setAlarm-Method,因此它将前进到下一个警报。为此,我已将flags设置为pendingIntent

      PendingIntent sender = PendingIntent.getBroadcast(context, ID,intent,PendingIntent.FLAG_UPDATE_CURRENT );