在那里我想发送带有编辑文本变量的特殊日期和时间的通知。我在项目上使用DatePicker,TimePicker,AlertReciever.class和edittexts。我尝试过,但无法正常工作。我怎么能解决我的问题呢?你能快点吗?对我来说很重要。
activity.class
public class hatirlatici extends AppCompatActivity implements TimePickerDialog.OnTimeSetListener,DatePickerDialog.OnDateSetListener {
Calendar now = Calendar.getInstance();
Button hatirlaticitarihsaat,backhome;
EditText editisim,editaciklama;
ImageView tick;
TextView textbasariylakuruldu,texthatirlaticibas,hatirlaticiaciktext,zaman;
private int notificationId = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hatirlatici);
zaman=findViewById(R.id.zaman);
editisim=findViewById(R.id.hatbaslik);
tick=findViewById(R.id.tick);
textbasariylakuruldu=findViewById(R.id.textbasariylakuruldu);
texthatirlaticibas=findViewById(R.id.texthatirlaticibas);
hatirlaticiaciktext=findViewById(R.id.hatirlaticiaciktext);
editaciklama=findViewById(R.id.hataciklama);
hatirlaticitarihsaat= findViewById(R.id.taarihsaatbutton);
hatirlaticitarihsaat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DialogFragment datePicker = new DatePickerFragment();
datePicker.show(getSupportFragmentManager(), "date picker");
}
});
}
public void onTimeSet(TimePicker timePicker, int hourOfDay, int minute) {
now.set(Calendar.HOUR_OF_DAY, hourOfDay);
now.set(Calendar.MINUTE, minute);
now.set(Calendar.SECOND, 0);
Intent intent = new Intent(hatirlatici.this, AlertReciever.class);
intent.putExtra("notificationId", notificationId);
intent.putExtra("messagex", editaciklama.getText().toString());
intent.putExtra("titlex", editisim.getText().toString());
PendingIntent alarmintent = PendingIntent.getBroadcast(
hatirlatici.this,0,intent,PendingIntent.FLAG_CANCEL_CURRENT
);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
Calendar startalarm = Calendar.getInstance();
startalarm.set(Calendar.HOUR_OF_DAY, hourOfDay);
startalarm.set(Calendar.SECOND, 0);
startalarm.set(Calendar.MINUTE, minute);
long alarmstartTime = startalarm.getTimeInMillis();
alarmManager.set(AlarmManager.RTC_WAKEUP, alarmstartTime, alarmintent);
}
private void startNotification(Calendar now){
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this,AlertReciever.class);
intent.putExtra("Isım_ID", editisim.getText().toString());
intent.putExtra("Aciklama", editaciklama.getText().toString());
PendingIntent pendingIntent = PendingIntent.getBroadcast(this,1,intent,0);
alarmManager.setExact(AlarmManager.RTC_WAKEUP, now.getTimeInMillis(), pendingIntent);
}
@Override
public void onDateSet(DatePicker datePicker, int year, int month, int day) {
now.set(Calendar.YEAR, year);
now.set(Calendar.MONTH, month);
now.set(Calendar.DAY_OF_MONTH, day);
DialogFragment timePicker = new TimePickerFragment();
timePicker.show(getSupportFragmentManager(), "time picker");
String Datex = DateFormat.getDateInstance(DateFormat.DATE_FIELD).format(now.getTime());
zaman.setText(Datex);
Calendar startalarm = Calendar.getInstance();
startalarm.set(Calendar.DAY_OF_MONTH,day );
startalarm.set(Calendar.YEAR, year);
startalarm.set(Calendar.MONTH, month);
Intent intent = new Intent(hatirlatici.this, AlertReciever.class);
PendingIntent alarmintent = PendingIntent.getBroadcast(
hatirlatici.this,0,intent,PendingIntent.FLAG_CANCEL_CURRENT
);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
long alarmstartTime = startalarm.getTimeInMillis();
alarmManager.set(AlarmManager.RTC_WAKEUP, alarmstartTime, alarmintent);
}
}
AlertReciever.class
public class AlertReciever extends BroadcastReceiver {
private Notification notification;
private static final String ChannelID = "Sample_Channel";
@Override
public void onReceive(Context context, Intent intent) {
int NotificationId = intent.getIntExtra("notificationId", 0);
String message = intent.getStringExtra("messagex");
String title = intent.getStringExtra("titlex");
Intent mainIntent = new Intent(context, hatirlatici.class);
PendingIntent contentIntent = PendingIntent.getActivity(
context,0,mainIntent,0
);
NotificationManager notificationManager =
(NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O){
CharSequence channelName = "My Notification";
int importance = NotificationManager.IMPORTANCE_DEFAULT;
NotificationChannel channel = new NotificationChannel(ChannelID,channelName,importance);
notificationManager.createNotificationChannel(channel);
}
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, ChannelID)
.setContentText(message)
.setContentTitle(title)
.setContentIntent(contentIntent)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setSmallIcon(R.drawable.ic_baseline_menu_book_24);
notificationManager.notify(NotificationId, builder.build());
}
}