在android studio中使用alarm manager设置特定日期和时间的通知

ewm0tg9j  于 2021-07-08  发布在  Java
关注(0)|答案(0)|浏览(497)

我的应用程序上有datepicker、time picker和edittext。我想用edittext变量设置特定日期和时间的通知。它可以工作,但它只能工作时间选择器。它使用edittext-only计时器变量设置通知。如何使用时间和日期选择器变量设置通知。
主活动类

  1. public class mainactivity extends AppCompatActivity implements TimePickerDialog.OnTimeSetListener, DatePickerDialog.OnDateSetListener {
  2. Calendar now = Calendar.getInstance();
  3. Button hatirlaticitarihsaat,backhome;
  4. EditText editisim,editaciklama;
  5. TimePickerDialog tpd;
  6. DatePickerDialog dpd;
  7. @Override
  8. protected void onCreate(Bundle savedInstanceState) {
  9. super.onCreate(savedInstanceState);
  10. setContentView(R.layout.activity_hatirlatici);
  11. editisim=findViewById(R.id.hatbaslik);
  12. editaciklama=findViewById(R.id.hataciklama);
  13. hatirlaticitarihsaat= findViewById(R.id.taarihsaatbutton);
  14. hatirlaticitarihsaat.setOnClickListener(new View.OnClickListener() {
  15. @Override
  16. public void onClick(View view) {
  17. DialogFragment datePicker = new DatePickerFragment();
  18. datePicker.show(getSupportFragmentManager(), "date picker");
  19. }
  20. });
  21. }
  22. public void onTimeSet(TimePicker timePicker, int hourOfDay, int minute) {
  23. Intent intent = new Intent(hatirlatici.this, AlertReciever.class);
  24. intent.putExtra("notificationId", notificationId);
  25. intent.putExtra("messagex", editaciklama.getText().toString());
  26. intent.putExtra("titlex", editisim.getText().toString());
  27. intent.setAction("ALERT_RECIEVER");
  28. PendingIntent alarmintent = PendingIntent.getBroadcast(
  29. hatirlatici.this,0,intent,PendingIntent.FLAG_CANCEL_CURRENT
  30. );
  31. AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
  32. Calendar startalarm = Calendar.getInstance();
  33. startalarm.set(Calendar.HOUR_OF_DAY, hourOfDay);
  34. startalarm.set(Calendar.SECOND, 0);
  35. startalarm.set(Calendar.MINUTE, minute);
  36. long alarmstartTime = startalarm.getTimeInMillis();
  37. alarmManager.set(AlarmManager.RTC_WAKEUP, alarmstartTime, alarmintent);
  38. }
  39. private void startNotification(Calendar now){
  40. AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
  41. Intent intent = new Intent(this,AlertReciever.class);
  42. intent.putExtra("Isım_ID", editisim.getText().toString());
  43. intent.putExtra("Aciklama", editaciklama.getText().toString());
  44. PendingIntent pendingIntent = PendingIntent.getBroadcast(this,1,intent,0);
  45. alarmManager.setExact(AlarmManager.RTC_WAKEUP, now.getTimeInMillis(), pendingIntent);
  46. }
  47. @Override
  48. public void onDateSet(DatePicker datePicker, int year, int month, int day) {
  49. now.set(Calendar.YEAR, year);
  50. now.set(Calendar.MONTH, month);
  51. now.set(Calendar.DAY_OF_MONTH, day);
  52. DialogFragment timePicker = new TimePickerFragment();
  53. timePicker.show(getSupportFragmentManager(), "time picker");
  54. String Datex = DateFormat.getDateInstance(DateFormat.DATE_FIELD).format(now.getTime());
  55. zaman.setText(Datex);
  56. Calendar startalarm = Calendar.getInstance();
  57. startalarm.set(Calendar.DAY_OF_MONTH,day );
  58. startalarm.set(Calendar.YEAR, year);
  59. startalarm.set(Calendar.MONTH, month);
  60. }
  61. }

timepickerfragment.java文件

  1. public class TimePickerFragment extends DialogFragment {
  2. @NonNull
  3. @Override
  4. public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
  5. Calendar c = Calendar.getInstance();
  6. int hour = c.get(Calendar.HOUR_OF_DAY);
  7. int minute = c.get(Calendar.MINUTE);
  8. return new TimePickerDialog(getActivity(), (TimePickerDialog.OnTimeSetListener) getActivity(), hour,minute, android.text.format.DateFormat.is24HourFormat(getActivity()));
  9. }
  10. }

datepickerfragment.java文件

  1. public class DatePickerFragment extends DialogFragment {
  2. @NonNull
  3. @Override
  4. public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
  5. Calendar c = Calendar.getInstance();
  6. int year = c.get(Calendar.YEAR);
  7. int month = c.get(Calendar.MONTH);
  8. int day = c.get(Calendar.DAY_OF_MONTH);
  9. return new DatePickerDialog(getActivity(), (DatePickerDialog.OnDateSetListener) getActivity(),year ,month,day);
  10. }
  11. }

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题