我设置了一个首选项屏幕,其中有一个列表首选项,允许用户选择通知他们的时间间隔。
他们可以选择是否每 2、4、8、10 或 12 小时后通知他们。
这是我的列表偏好:
<?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 小时后通知他/她!
按着这些次序:
-
将以下方法复制到你的设置.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();
}
}
-
给他们打电话onPreferenceChange()
方法。就像这样:
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;
}
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)