Я делаю приложение тревоги для Android.Я хочу установить больше будильников, используя AlarmManager.Как мне это сделать?Насколько я знаю, мне нужно использовать PendingIntent с другим кодом запроса для установки некоторых сигналов.Я пытался увеличить статическую переменную, и я сделал это, но если пользователь перезагрузит приложение, у переменной будет нулевой код запроса.Как я могу установить некоторые сигналы тревоги даже после перезагрузки моего приложения?
У меня есть одно действие
public class NewAlarmActivity extends AppCompatActivity {
private Calendar calendar;
private static int REQUEST_CODE_ALARM = 0;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new_alarm);
showTimePickerDialog();
FloatingActionButton floatingActionButton = findViewById(R.id.fb_save_alarm);
floatingActionButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
saveAlarm();
}
});
}
// set time for an alarm
private void showTimePickerDialog() {
calendar = Calendar.getInstance();
TimePickerDialog timePickerDialog = new TimePickerDialog(NewAlarmActivity.this, AlertDialog.THEME_DEVICE_DEFAULT_DARK, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
calendar.set(Calendar.MINUTE, minute);
}
}, Calendar.HOUR_OF_DAY, Calendar.MINUTE, true);
timePickerDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
finish();
}
});
timePickerDialog.show();
}
// get full time like a '05:45'
private String getFullTime(int hour, int minute) {
String h = String.valueOf(hour);
String m = String.valueOf(minute);
if (hour < 10) h = "0" + hour;
if (minute < 10) m = "0" + minute;
return h + ":" + m;
}
private void saveAlarm() {
setAlarm();
insertIntoSQLite();
finish();
}
private void setAlarm() {
Intent intent = new Intent(NewAlarmActivity.this, AlarmReceiver.class);
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), ++REQUEST_CODE_ALARM, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
if (alarmManager != null) {
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
}
}
private void insertIntoSQLite() {
DBHelper dbHelper = new DBHelper(NewAlarmActivity.this);
SQLiteDatabase database = dbHelper.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("time", getFullTime(calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE)));
contentValues.put("description", et_description.getText().toString());
database.insert("alarm", null, contentValues);
dbHelper.close();
}
}