Создать уведомление, связанное с датой с JobScheduler - PullRequest
0 голосов
/ 30 июня 2019

Я создаю встречу и мне нужно установить уведомление с этой конкретной датой. Я создаю уведомление 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;
}
...