Android 如果电话时间格式为12小时,则本地通知不触发

Android 如果电话时间格式为12小时,则本地通知不触发,android,notifications,alarmmanager,date-format,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; sta

我正在创建一个应用程序,当一天的时间是下午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);

    }

}
公共类LocalNotificationsService扩展服务{
最终静态整数RQS_1=1;
静态报警管理器;
静态下垂下垂;
静态日历calNow;
静态日历calSet;
静态语境;
@凌驾
public void onCreate(){
上下文=这个;
alarmManager=(alarmManager)getSystemService(Context.ALARM\u服务);
if(DateFormat.is24HourFormat(上下文)){
设置报警(14,0);
}否则{
设置报警(2,0);
}
}
公共静态无效设置报警(int h,int m){
calNow=Calendar.getInstance();
calSet=(Calendar)calNow.clone();
calSet.set(日历小时/天,h);
calSet.set(日历分钟,m);
calSet.set(日历秒,0);
calSet.set(日历毫秒,0);

如果(calSet.compareTo)(calNow)很明显,如果时间格式更改为12小时,您将不会收到通知

问题在于setAlarm方法。您正在将calSet的小时设置为Calendar.hour\u OF_DAY

如果是12小时,则必须是日历小时

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


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

is24HourFormat工作正常。您的代码是否适用于24小时格式?yes@keshav工作正常。我在setAlarm()方法中添加了这个条件,它工作正常:)if(DateFormat.is24HourFormat(context)){calSet.set(Calendar.HOUR_OF_DAY,h)}else{calSet.set(Calendar.HOUR,h)}谢谢你我不知道哈哈,正如我所想,我知道我错过了一些东西。非常有帮助,我学到了一些新的东西。谢谢Jigar Pandya先生。非常感谢菲律宾:D@GreenFox:非常欢迎:)