簡體   English   中英

開始時發送Android通知

[英]Android notification sent on start

我已經設置了一個警報管理器,每天中午下班並發送通知,並且除了一部分以外,它工作正常。 當我第一次打開該應用程序時,無論何時,它都會立即發出通知。

Intent myIntent = new Intent(arg0, NotificationService.class);
    myIntent.putExtra("compDate", tti.getEvents()[0][1]);
    AlarmManager alarmManager = (AlarmManager)arg0.getSystemService(Context.ALARM_SERVICE);
    PendingIntent pendingIntent = PendingIntent.getService(arg0, 0, myIntent, 0);

    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.SECOND, 0);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.HOUR, 12);
    calendar.set(Calendar.AM_PM, Calendar.AM);
    calendar.set(Calendar.DAY_OF_MONTH, 1);

    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);

該方法由onCreate方法中的這段代碼調用

int f = preferences.getInt("numberOfLaunches", 1);

    if(f < 2){
        alarmMethod();
        f++;
        editor.putInt("numberOfLaunches", f);
        editor.apply();
    }

那是唯一一次被調用

最可能的原因是:

如果指定的觸發時間已過,警報將立即觸發

http://developer.android.com/reference/android/app/AlarmManager.html#setRepeating

確保將第一個警報設置為將來。

好的,感謝這個問題: Android警報立即響起,而Kuffs的回答又消失了,我添加了這段代碼,它的工作就像一個魅力。

Date dat  = new Date();
    Calendar cal_alarm = Calendar.getInstance();
    Calendar cal_now = Calendar.getInstance();
    cal_now.setTime(dat);
    cal_alarm.setTime(dat);
    cal_alarm.set(Calendar.HOUR_OF_DAY, 12);
    cal_alarm.set(Calendar.MINUTE, 0);
    cal_alarm.set(Calendar.SECOND, 0);

    if(cal_alarm.before(cal_now)){
        cal_alarm.add(Calendar.DATE,1);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM