How to edit/reset Alarm Manager?

故事扮演 提交于 2019-11-30 21:14:50
Biraj Zalavadia

Follow these steps:

  1. Copy the following methods to your Setting.java file:

    private final int NOTIFICATION_TIMER = 11;
    
    public void setAlarm(Context mContext,int requestCode,long time) {
    
        Intent myIntent = new Intent(mContext, AlarmReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, requestCode, myIntent,0);
    
        cancelAlarmIfExists(mContext,requestCode,myIntent);
    
        AlarmManager alarmManager = (AlarmManager)mContext.getSystemService(ALARM_SERVICE);
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, (System.currentTimeMillis()+time), time, pendingIntent);
    }
    
    public void cancelAlarmIfExists(Context mContext,int requestCode,Intent intent){
        try {
            PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, requestCode, intent,0);
            AlarmManager am=(AlarmManager)mContext.getSystemService(Context.ALARM_SERVICE);
            am.cancel(pendingIntent);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
  2. Call them from the onPreferenceChange() method. Like so:

    listPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
        @Override
        public boolean onPreferenceChange(Preference preference, Object newValue) {
    
            long time = 34352355253; // calculate millisecons from change value by user.
            setAlarm(Settings.this,NOTIFICATION_TIMER,time);
            return false;
        }
    });
    

FLAG_CANCEL_CURRENT has the same effect as above answer

PendingIntent pi = PendingIntent.getService(this, 0, notifIntent, PendingIntent.FLAG_CANCEL_CURRENT);
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!