我正在创建一个应用程序,当一天的时间是下午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);
}
}
答案 0 :(得分:2)
如果时间格式改为12小时,很明显你不会收到通知。
问题在于你的setAlarm方法。您将calSet的小时设置为Calendar.HOUR_OF_DAY。
12个小时,必须是Calendar.HOUR。
因此,在设置该参数之前,请检查系统的时间格式并进行相应的设置。
您可以询问是否有任何进一步的疑问:)