如果手机时间格式为12小时,则本地通知不会触发

时间:2014-01-10 06:28:35

标签: android notifications alarmmanager date-format

我正在创建一个应用程序,当一天的时间是下午2:00时触发本地通知,当我的设备的日期/时间格式设置为24小时(返回14:00)时,我正常工作。但是,当设备日期/时间格式为12小时时。我错过了什么吗?这是我的代码:

public class LocalNotificationsService extends Service {


    final static int RQS_1 = 1;
    static AlarmManager alarmManager;
    static PendingIntent pendingIntent;
    static Calendar calNow;
    static Calendar calSet;

    static Context context;
    @Override
    public void onCreate() {
        context = this;
        alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

            if(DateFormat.is24HourFormat(context)){
                setAlarm(14, 0);
            }else{
                setAlarm(2, 0);
            }

    }

    public static void setAlarm(int h, int m) {
        calNow = Calendar.getInstance();
        calSet = (Calendar) calNow.clone();

        calSet.set(Calendar.HOUR_OF_DAY, h);
        calSet.set(Calendar.MINUTE, m);
        calSet.set(Calendar.SECOND, 0);
        calSet.set(Calendar.MILLISECOND, 0);

        if (calSet.compareTo(calNow) <= 0) {
            // Today Set time passed, count to tomorrow
            calSet.add(Calendar.DATE, 1);
        }

        Intent intent = new Intent(context, LocalNotificationsReceiver.class);
        pendingIntent = PendingIntent.getBroadcast(context, RQS_1, intent, 0);
        alarmManager.set(AlarmManager.RTC_WAKEUP, calSet.getTimeInMillis(), pendingIntent);

    }

}

1 个答案:

答案 0 :(得分:2)

如果时间格式改为12小时,很明显你不会收到通知。

问题在于你的setAlarm方法。您将calSet的小时设置为Calendar.HOUR_OF_DAY。

12个小时,必须是Calendar.HOUR。

因此,在设置该参数之前,请检查系统的时间格式并进行相应的设置。

您可以询问是否有任何进一步的疑问:)