0

私が実装しようとしているのは通知、つまり通知マネージャーを使用したアラートです。日付と時刻を選択してアラートを設定するようにユーザーに求めています。アラートの設定には、NONE、On Time、5分前、15分前、30分前などの値があります.NONEを除くすべての人に適しています.ユーザーがNONEを選択した場合、通知は行われません。代わりに、すぐに行われます。私が行ったコードは以下のとおりです。何か提案してください。リストの最初のオプションなので、私は何もしていませんユーザーが none.So を選択した場合、何も設定していません。

if(alert.equalsIgnoreCase("On Time"))
{
    Calendar cal=Calendar.getInstance();
    cal.set(Calendar.DAY_OF_MONTH,reminderday);
    cal.set(Calendar.MONTH,remindermonth);
    cal.set(Calendar.YEAR,reminderyear);
    cal.set(Calendar.HOUR_OF_DAY,hour);
    cal.set(Calendar.MINUTE,minute);
    starttime=cal.getTimeInMillis();
}
else if(alert.equalsIgnoreCase("5 Minutes Before"))
{
    Log.i("inside","5 mins before");
    Calendar cal=Calendar.getInstance();
    cal.set(Calendar.DAY_OF_MONTH,reminderday);
    cal.set(Calendar.MONTH,remindermonth);
    cal.set(Calendar.YEAR,reminderyear);
    cal.set(Calendar.HOUR_OF_DAY,hour);
    cal.set(Calendar.MINUTE,minute-5);
    starttime=cal.getTimeInMillis();
}

else if(alert.equalsIgnoreCase("15 Minutes Before"))
{
    Log.i("inside","15 mins before");
    Calendar cal=Calendar.getInstance();
    cal.set(Calendar.DAY_OF_MONTH,reminderday);
    cal.set(Calendar.MONTH,remindermonth);
    cal.set(Calendar.YEAR,reminderyear);
    cal.set(Calendar.HOUR_OF_DAY,hour);
    cal.set(Calendar.MINUTE,minute-15);
    starttime=cal.getTimeInMillis();
}
else if(alert.equalsIgnoreCase("30 Minutes Before"))
{
    Log.i("inside","30 mins before");
    Calendar cal=Calendar.getInstance();
    cal.set(Calendar.DAY_OF_MONTH,reminderday);
    cal.set(Calendar.MONTH,remindermonth);
    cal.set(Calendar.YEAR,reminderyear);
    cal.set(Calendar.HOUR_OF_DAY,hour);
    cal.set(Calendar.MINUTE,minute-30);
    starttime=cal.getTimeInMillis();
}
else if(alert.equalsIgnoreCase("1 Hour Before"))
{
    Log.i("inside","1 hr before");
    Calendar cal=Calendar.getInstance();
    cal.set(Calendar.DAY_OF_MONTH,reminderday);
    cal.set(Calendar.MONTH,remindermonth);
    cal.set(Calendar.YEAR,reminderyear);
    cal.set(Calendar.HOUR_OF_DAY,hour-1);
    cal.set(Calendar.MINUTE,minute);
    starttime=cal.getTimeInMillis();
}
else if(alert.equalsIgnoreCase("2 Hour Before"))
{
    Log.i("inside","2 hr before");
    Calendar cal=Calendar.getInstance();
    cal.set(Calendar.DAY_OF_MONTH,reminderday);
    cal.set(Calendar.MONTH,remindermonth);
    cal.set(Calendar.YEAR,reminderyear);
    cal.set(Calendar.HOUR_OF_DAY,hour-2);
    cal.set(Calendar.MINUTE,minute);
    starttime=cal.getTimeInMillis();
}
else if(alert.equalsIgnoreCase("1 Day Before"))
{
    Log.i("inside","1 day before");
    Calendar cal=Calendar.getInstance();
    cal.set(Calendar.DAY_OF_MONTH,reminderday-1);
    cal.set(Calendar.MONTH,remindermonth);
    cal.set(Calendar.YEAR,reminderyear);
    cal.set(Calendar.HOUR_OF_DAY,hour);
    cal.set(Calendar.MINUTE,minute);
    starttime=cal.getTimeInMillis();
}
else if(alert.equalsIgnoreCase("2 Day Before"))
{
    Log.i("inside","2 day before");
    Calendar cal=Calendar.getInstance();
    cal.set(Calendar.DAY_OF_MONTH,reminderday-2);
    cal.set(Calendar.MONTH,remindermonth);
    cal.set(Calendar.YEAR,reminderyear);
    cal.set(Calendar.HOUR_OF_DAY,hour);
    cal.set(Calendar.MINUTE,minute);
    starttime=cal.getTimeInMillis();
}
else if(alert.equalsIgnoreCase("1 Week Before"))
{
    Log.i("inside","1 week before");
    Calendar cal=Calendar.getInstance();
    cal.set(Calendar.DAY_OF_MONTH,reminderday-7);
    cal.set(Calendar.MONTH,remindermonth);
    cal.set(Calendar.YEAR,reminderyear);
    cal.set(Calendar.HOUR_OF_DAY,hour);
    cal.set(Calendar.MINUTE,minute);
    starttime=cal.getTimeInMillis();
}
else
        {
            starttime=-1;   
        }
PendingIntent pendingIntent = PendingIntent.getBroadcast(this,0,intent, PendingIntent.FLAG_UPDATE_CURRENT);
            am.set(AlarmManager.RTC_WAKEUP,starttime, pendingIntent);

私が得た問題は、starttime 値がない場合は 0 になることです。だから、それが行かないようにstarttimeにどのような値を設定する必要がありますか。

4

1 に答える 1

3
if (starttime > 0){    
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this,0,intent, PendingIntent.FLAG_UPDATE_CURRENT);
                am.set(AlarmManager.RTC_WAKEUP,starttime, pendingIntent);    
}

代わりに上記のコードを使用してください。

于 2012-12-29T07:01:45.620 に答える