如何编辑/复位报警管理器? [英] How to edit/reset Alarm Manager?

查看:216
本文介绍了如何编辑/复位报警管理器?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经设置了preference屏幕中,我有一个列表preference它允许用户选择时间间隔通知他们。

他们可以选择是否要每2,4,8,10-或12小时后通知他们。

这里是我的名单preference:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<ListPreference
            android:title="Notification Timer"
            android:summary="Select when to Notify"
            android:dialogTitle="Show Notification after every:"
            android:positiveButtonText="OK"
            android:negativeButtonText="Cancel"
            android:entries="@array/entries"
            android:entryValues="@array/entries"
            android:key="listPrefs" />
</PreferenceScreen>

这是我的Settings.class文件:

public class Settings extends PreferenceActivity implements OnPreferenceChangeListener{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.settings);

        ListPreference listPreference = (ListPreference) findPreference("listPrefs");
        listPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {

            @Override
            public boolean onPreferenceChange(Preference preference, Object newValue) {

                return false;
            }
        });
        @Override
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        // TODO Auto-generated method stub
        return false;
    }
}

我要的更新或每用户更改通知他/她的时间间隔的时间重置警报。为前如果用户选择了比他4小时/她必须在4小时后得到通知,或者如果用户选择比他早在10学时/她必须在10小时后得到通知!

I want to update or reset Alarms every time the user changes the time interval of notifying him/her. for ex- If user selects 4 hours than he/she must be notified after 4 hours or if user chooses 10 hours than he/she must be notified after 10 hours!

推荐答案

按照以下步骤

此方法复制到Setting.java文件

Copy this 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();
        }
    }

从preferenceChange()方法调用它

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;
            }
        });

这篇关于如何编辑/复位报警管理器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆