Повторяющиеся уведомления
Как сделать так чтобы приложение отправляло уведомление каждый день в выбранное время на протяжении недели? Вот мой код:
private int notificationId = 3;
public String message;
public int tch=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_notifontime);
// Set Onclick Listener.
findViewById(R.id.setBtn).setOnClickListener(this);
findViewById(R.id.cancelBtn).setOnClickListener(this);
}
@Override
public void onClick(View view) {
EditText editText = findViewById(R.id.editTextnotif);
TimePicker timePicker = findViewById(R.id.timePicker);
message = editText.getText().toString();
// Set notificationId & text.
Intent intent = new Intent(Main_Notif.this, AlarmReceiver.class);
intent.putExtra("notificationId", notificationId);
intent.putExtra("todo", message);
// getBroadcast(context, requestCode, intent, flags)
PendingIntent alarmIntent1 = PendingIntent.getBroadcast(Main_Notif.this, 0,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE);
switch (view.getId()) {
case R.id.setBtn: {
int hour = timePicker.getCurrentHour();
int minute = timePicker.getCurrentMinute();
// Create time.
Calendar startTime = Calendar.getInstance();
startTime.set(Calendar.HOUR_OF_DAY, hour);
startTime.set(Calendar.MINUTE, minute);
startTime.set(Calendar.SECOND, 0);
long alarmStartTime = startTime.getTimeInMillis();
// Set alarm.
// set(type, milliseconds, intent)
alarm.set(AlarmManager.RTC_WAKEUP, alarmStartTime, alarmIntent1);
Toast.makeText(this, "Done!", Toast.LENGTH_SHORT).show();
tch++;
}
break;
case R.id.cancelBtn:
alarm.cancel(alarmIntent1);
Toast.makeText(this, "Canceled.", Toast.LENGTH_SHORT).show();
break;
}
}
private final int NOTIFICATION_ID = 2342;
private String CHANNEL_ID = "my_channel_011";
public String message;
Random random = new Random();
int m = random.nextInt(9999 - 1000) + 1000;
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onReceive(Context context, Intent intent) {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
CharSequence name = "my_channel";
String Description = "This is my channel";
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID, name, importance);
mChannel.setDescription(Description);
mChannel.enableLights(true);
mChannel.setLightColor(Color.RED);
mChannel.enableVibration(true);
mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
mChannel.setShowBadge(false);
notificationManager.createNotificationChannel(mChannel);
}
message = intent.getStringExtra("todo");
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID)
.setSmallIcon(R.drawable.itdoc)
.setContentTitle("Лекарство ")
.setContentText(message)
.setShowWhen(true);
//.setWhen(Calendar.getInstance().getTimeInMillis() );
Intent resultIntent = new Intent(context, LoginActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
stackBuilder.addParentStack(MainActivity.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, 0);
builder.setContentIntent(resultPendingIntent);
notificationManager.notify(m, builder.build());
}