Android 设置多个警报
我已经成功设置了一个报警应用程序,但当有多个报警时,问题就出现了。它将覆盖以前选择的报警 我应该对挂起的intent语句附近的Android 设置多个警报,android,android-intent,Android,Android Intent,我已经成功设置了一个报警应用程序,但当有多个报警时,问题就出现了。它将覆盖以前选择的报警 我应该对挂起的intent语句附近的MainActivity.java文件做哪些更改 我在网上搜索过,他们说使用for循环来增加挂起的意图id,但它不起作用 任何帮助都会很好。这是我的密码` public void add() { button_add.setOnClickListener(new View.OnClickListener() { @Override
MainActivity.java
文件做哪些更改
我在网上搜索过,他们说使用for循环来增加挂起的意图id,但它不起作用
任何帮助都会很好。这是我的密码`
public void add() {
button_add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, timepicker.getCurrentHour());
calendar.set(Calendar.MINUTE, timepicker.getCurrentMinute());
Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
**PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);**
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
Toast.makeText(MainActivity.this, "the alarm is set for " + timepicker.getCurrentHour() + " : " + timepicker.getCurrentMinute(), Toast.LENGTH_SHORT).show();
myDb.insertRow(timepicker.getCurrentHour().toString(), timepicker.getCurrentMinute().toString());
}
});
}
您需要为每个挂起的意图定义不同的id,只需在下面的行中稍作更改-
**PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);**
不要传递1,只需传递每个不同报警的唯一id即可
public static int getAlarmId(Context context) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
int alarmId = preferences.getInt("ALARM", 1);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("ALARM", alarmId + 1).apply();
return alarmId;
}
希望它能起作用:)您需要为每个待定的意图定义不同的id,只需在下面的行中稍作更改-
**PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);**
不要传递1,只需传递每个不同报警的唯一id即可
public static int getAlarmId(Context context) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
int alarmId = preferences.getInt("ALARM", 1);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("ALARM", alarmId + 1).apply();
return alarmId;
}
希望它能工作:)我正在列表视图中存储警报。你能帮我编辑代码吗?所以我将初始化一个变量并递增它,然后将它设置为唯一的id?我从昨天开始就一直在为这个问题苦苦挣扎。是的,增量可以很好地工作,或者你可以在7月8日下午1-58点使用HHMMDMMYY int格式,比如13580714,这样可以避免重复报警,但如果你不需要任何高级别的准确度,那么只使用增量:)它不工作。我初始化一个uniqueid变量=1,*pendingent pendingent=pendingent.getBroadcast(MainActivity.this,uniqueid,intent,pendingent.FLAG_UPDATE_CURRENT);然后uniqueid++更好地管理SharedReferences,就像每次读取值时都会将值增加一倍,然后再写入。因此,每次提取时,都会得到一个新值。在初始化唯一变量之后,它也会覆盖我以前设置的报警,并且只有最后一个报警集会响。我该怎么办?我正在列表视图中存储报警。你能帮我编辑代码吗?所以我将初始化一个变量并递增它,然后将它设置为唯一的id?我从昨天开始就一直在为这个问题苦苦挣扎。是的,增量可以很好地工作,或者你可以在7月8日下午1-58点使用HHMMDMMYY int格式,比如13580714,这样可以避免重复报警,但如果你不需要任何高级别的准确度,那么只使用增量:)它不工作。我初始化一个uniqueid变量=1,*pendingent pendingent=pendingent.getBroadcast(MainActivity.this,uniqueid,intent,pendingent.FLAG_UPDATE_CURRENT);然后uniqueid++更好地管理SharedReferences,就像每次读取值时都会将值增加一倍,然后再写入。因此,每次提取时,都会得到一个新值。在初始化唯一变量之后,它也会覆盖我以前设置的报警,并且只有最后一个报警集会响。我该怎么办?