AlarmManager不适用于特定日期

时间:2018-01-19 18:46:34

标签: android android-studio calendar broadcastreceiver alarmmanager

AlarmManager在当前日期执行,但我需要在10h。

我在AlarmManager中的日程安排代码

public class RecieverAlert extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    Calendar calendar = GregorianCalendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());
    calendar.set(Calendar.HOUR_OF_DAY, 10);
    intent = new Intent(context, BootReciever.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context,25202,intent,PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager alarmManager = (AlarmManager) context.getSystemService(context.ALARM_SERVICE);
    if(Build.VERSION.SDK_INT < 23){
        if(Build.VERSION.SDK_INT >= 19){
            alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTime().getTime(), pendingIntent);
        } else {
            alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTime().getTime(), pendingIntent);
        }
    } else {
        alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, calendar.getTime().getTime(), pendingIntent);
    }
}

使用Calendar类,我得到正确的long值,但是AlarmManager按时运行,而不是按Calendar类发送的时间表运行。

0 个答案:

没有答案