Я пытаюсь установить уведомление, используя android studio на android уровне 26+, но если я выбираю случайные дни для уведомления, но уведомление отображается каждый день
Как установить Calendar.DAYS_OF_WEEK ... ..подобно, если сегодня воскресенье, и я устанавливаю Calendar.DAYS_OF_WEEK, 3 (вторник), диспетчер сигналов тревоги должен получать уведомление только каждый вторник, но он также показывает уведомление в воскресенье
private void setNotification(AlarmList values) {
Cursor data = mDatabaseHelper.getItemID(values.getMedicineName());
int itemID = -1;
while (data.moveToNext()) {
itemID = data.getInt(0);
}
if (itemID > -1) {
Intent intent = new Intent(getApplicationContext(), NotificationReceiver.class);
intent.putExtra("name", values.getMedicineName());
intent.putExtra("quantity", values.getQuantity());
intent.putExtra("quality", values.getQuality());
intent.putExtra("id", itemID);
intent.putExtra("days", days);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), (itemID), intent, PendingIntent.FLAG_UPDATE_CURRENT);
for (int i = 0; i < 7; i++) {
if (days[i]) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
calendar.set(Calendar.DAY_OF_WEEK, (i + 1));
long alarm_time = calendar.getTimeInMillis();
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, alarm_time,
AlarmManager.INTERVAL_DAY*7, pendingIntent);
}
}
finish();
Intent activity = new Intent(AddMedicine.this, TabLayoutActivity.class);
// i.putExtra("fragment id",1);
startActivity(activity);
}
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import androidx.core.app.NotificationCompat;
import androidx.core.app.NotificationManagerCompat;
public class NotificationReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String name = intent.getStringExtra("name");
String quantity = intent.getStringExtra("quantity");
String quality = intent.getStringExtra("quality");
int id = intent.getIntExtra("id", 0);
boolean days[] = intent.getBooleanArrayExtra("days");
String Heading = "Medicine Reminder";
String text = "Reminder for " + name + " " + quantity + " " + quality;
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
Intent repeatingIntent = new Intent(context, NotificationView.class);
repeatingIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(context, id, repeatingIntent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, "notify")
.setContentIntent(pendingIntent)
.setSmallIcon(R.drawable.clock)
.setContentTitle(Heading)
.setContentText(text)
.setAutoCancel(true)
.setPriority(NotificationCompat.PRIORITY_DEFAULT);
notificationManager.notify(id, builder.build());
}
}