Я создаю встречу и мне нужно установить уведомление с этой конкретной датой.
Я создаю уведомление Chanel, но моя проблема заключается в том, как использовать JobScheduler для получения этого уведомления в определенное время (может быть в любое время) до моей даты назначения.
Например, если у меня назначена встреча завтра, я получу уведомление сегодня.
Я использую комнату дБ.
Вот мой код:
AddAppointmenetActivity
public class AddEditRdv extends AppCompatActivity {
Button btn_ajouter;
CalendarView cv;
TextView showTime;
LocalDate dateRDV;
TimePickerDialog timePicker;
EditText heure, titre;
int année, mois, jour, hour, minute;
String date, time;
private ImageView choisirH,choisirD;
public static final String Extra_Titre = "com.example.mjg.Extra_Titre";
public static final String Extra_DateR = "com.example.mjg.Extra_DateR";
public static final String Extra_HeureR = "com.example.mjg.Extra_HeureR";
private Switch aSwitch;
Calendar c;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd / MM/
yyyy.");
private DatePickerDialog.OnDateSetListener dateChoisie;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rdv);
cv = (CalendarView) findViewById(R.id.cv);
btn_ajouter = (Button) findViewById(R.id.btn_ajouter);
titre = (EditText) findViewById(R.id.titre);
c = Calendar.getInstance();
choisirH = (ImageView) findViewById(R.id.choisirH);
choisirH.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
timePicker = new TimePickerDialog(AddEditRdv.this, new
TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int
selectedHour, int selectedMinute) {
hour = selectedHour;
minute = selectedMinute;
time = hour + ":" + minute;
System.out.println(time);
}
}, hour, minute, true);
timePicker.setTitle("Choose time");
timePicker.show();
}
});
btn_ajouter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ajouterRDV();
LocalDate datebefore = (LocalDate) dateRDV.minusDays(1);
// Notification notification = new Notification(
simpleDateFormat.format(datebefore),"12:00",titre );
}
});
//Pour choisir une date
choisirD = findViewById(R.id.choisirD);
choisirD.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dialog = new DatePickerDialog(
AddEditRdv.this,
android.R.style.Theme_Holo_Light_Dialog_MinWidth,
dateChoisie,
year,month,day);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.show();
}
});
dateChoisie = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int month,
int day) {
jour = day;
mois = month;
année = year;
/* c.set(Calendar.DAY_OF_MONTH, day);
c.set(Calendar.MONTH, month);
c.set(Calendar.YEAR, year);*/
dateRDV = LocalDate.of(year,month,day);
date = jour + "/" + (mois + 1) + "/" + année;
System.out.println(date);
}
};
}
private void ajouterRDV() {
Intent data = new Intent();
data.putExtra(Extra_Titre, titre.getText().toString());
data.putExtra(Extra_DateR, date);
data.putExtra(Extra_HeureR, time);
setResult(RESULT_OK, data);
finish();
}
}
NotifactionService
public class NotificationJobService extends JobService {
@Override
public boolean onStartJob(JobParameters params) {
//Here I need to compare the dates i don't know how to do it
// Creation de la notification
NotificationCompat.Builder builder = new
NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher_round)
.setContentTitle("Votre rendez-vous est pour demain")
.setContentText(AddEditRdv.Extra_Titre);
// Creation de la barre notification
Intent notificationIntent = new Intent(this, AddEditRdv.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(contentIntent);
// Add as notification
NotificationManager manager = (NotificationManager)
getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(0, builder.build());
return false;
}
@Override
public boolean onStopJob(JobParameters params) {
return false;
}
}
NotificationEntity
@Entity
public class Notification {
@PrimaryKey(autoGenerate = true)
private int idN;
private String date,heure,information;
public Notification(String date, String heure, String information) {
this.date = date;
this.heure = heure;
this.information = information;
}