Android 对于kitkat和棒棒糖版本,使用报警管理器的通知无法正常工作

Android 对于kitkat和棒棒糖版本,使用报警管理器的通知无法正常工作,android,notifications,alarmmanager,android-4.4-kitkat,Android,Notifications,Alarmmanager,Android 4.4 Kitkat,您使用shared.getInt(“分钟”,0)作为触发时间。但是,触发时间应为警报发出的时间(以毫秒为单位) 根据api文件: 公共无效集(int类型、长触发器、挂起操作) 输入int:已用实时、已用实时唤醒、RTC或RTC唤醒中的一种 triggerAtMillis long:使用适当的时钟(取决于警报类型)发出警报的时间(以毫秒为单位) 操作挂起事件:在警报关闭时执行的操作;通常来自IntentSender.getBroadcast() 而不是使用 Calendar cal

您使用
shared.getInt(“分钟”,0)
作为触发时间。但是,触发时间应为警报发出的时间(以毫秒为单位)

根据api文件:

公共无效集(int类型、长触发器、挂起操作)

输入int:已用实时、已用实时唤醒、RTC或RTC唤醒中的一种

triggerAtMillis long:使用适当的时钟(取决于警报类型)发出警报的时间(以毫秒为单位)

操作挂起事件:在警报关闭时执行的操作;通常来自IntentSender.getBroadcast()

而不是使用

        Calendar calendar = Calendar.getInstance();
        Intent myIntent = new Intent(CubeActivity.this, MyReciever.class);

        SharedPreferences shared = getApplicationContext().getSharedPreferences("notification5", getApplicationContext().MODE_PRIVATE);
        SharedPreferences.Editor editor = shared.edit();    
        editor.putInt("minutes", (calendar.get(Calendar.HOUR_OF_DAY) )-1);
        editor.commit();

        myIntent.putExtra("minutes", (shared.getInt("minutes", 0)));

        PendingIntent pendingIntent = PendingIntent.getBroadcast(CubeActivity.this, 0, myIntent,0);

        AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
            alarmManager.set(AlarmManager.RTC_WAKEUP,shared.getInt("minutes", 0), pendingIntent);
使用以下代码:

AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP,shared.getInt("minutes", 0), pendingIntent);

请正确解释您的问题。使用alarm manager.set()方法,kikat和棒棒糖手机中的一些通知在24小时后发出,然后不定期地发出。从API 19开始,传递给此方法的触发时间被视为不精确。阅读此-,long,android.app.pendingent)为什么在设置报警管理器时使用
shared.getInt(“分钟”,0)
。我希望每24小时触发一次报警。我应该使用什么参数?24小时24*60*60*1000。
long TICK_TIME = 60*1000;  //the time to trigger alarm manager rite now its 1 minute  
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP,Calendar.getInstance().getTimeInMillis(), TICK_TIME, pendingIntent);