Android 设置多个警报

Android 设置多个警报,android,android-intent,Android,Android Intent,我已经成功设置了一个报警应用程序,但当有多个报警时,问题就出现了。它将覆盖以前选择的报警 我应该对挂起的intent语句附近的MainActivity.java文件做哪些更改 我在网上搜索过,他们说使用for循环来增加挂起的意图id,但它不起作用 任何帮助都会很好。这是我的密码` public void add() { button_add.setOnClickListener(new View.OnClickListener() { @Override

我已经成功设置了一个报警应用程序,但当有多个报警时,问题就出现了。它将覆盖以前选择的报警

我应该对挂起的intent语句附近的
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,就像每次读取值时都会将值增加一倍,然后再写入。因此,每次提取时,都会得到一个新值。在初始化唯一变量之后,它也会覆盖我以前设置的报警,并且只有最后一个报警集会响。我该怎么办?