Selamlar arkadaşlar,

Android geliştirmeye yeni başladım. Bir deneme yapmaya çalışıyorum öğrenme amaçlı olarak. Timepicker'dan aldığım saat ve dakikaya bağlı olarak bildirim oluşturacağım.Ama bir türlü yapamadım. Nerede hata yapıyorum acaba ?

MainActivity.java

package com.example.myapplication;import androidx.appcompat.app.AppCompatActivity;import androidx.core.app.NotificationCompat;import android.app.AlarmManager;import android.app.Notification;import android.app.NotificationChannel;import android.app.NotificationManager;import android.app.PendingIntent;import android.app.TimePickerDialog;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.os.Build;import android.os.Bundle;import android.os.SystemClock;import android.view.View;import android.widget.Button;import android.widget.TimePicker;import java.util.Calendar;public class MainActivity extends AppCompatActivity { private Button buttonBildirimGonder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); buttonBildirimGonder = (Button) findViewById(R.id.buttonBildirimGonder); buttonBildirimGonder.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { gecikmeliBildirimGonder(); } }); } package com.example.myapplication;import androidx.appcompat.app.AppCompatActivity;import androidx.core.app.NotificationCompat;import android.app.AlarmManager;import android.app.Notification;import android.app.NotificationChannel;import android.app.NotificationManager;import android.app.PendingIntent;import android.app.TimePickerDialog;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.os.Build;import android.os.Bundle;import android.os.SystemClock;import android.view.View;import android.widget.Button;import android.widget.TimePicker;import java.util.Calendar;public class MainActivity extends AppCompatActivity { private Button buttonBildirimGonder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); buttonBildirimGonder = (Button) findViewById(R.id.buttonBildirimGonder); buttonBildirimGonder.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { gecikmeliBildirimGonder(); } }); } private void gecikmeliBildirimGonder() { NotificationCompat.Builder builder; NotificationManager bildirimYoneticisi = (NotificationManager)getSystemService(Context.NOTI FICATION_SERVICE); Intent ıntent = new Intent(this,MainActivity.class); PendingIntent gidilecekIntent = PendingIntent.getActivity(this,1,ıntent,PendingInt ent.FLAG_UPDATE_CURRENT); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // Oreo sürümü için bu kod çalışacak. String kanalId = "kanalId"; String kanalAd = "kanalAd"; String kanalTanım = "kanalTanım"; int kanalOnceligi = NotificationManager.IMPORTANCE_HIGH; NotificationChannel kanal = bildirimYoneticisi.getNotificationChannel(kanalId) ; if (kanal == null) { kanal = new NotificationChannel(kanalId, kanalAd, kanalOnceligi); kanal.setDescription(kanalTanım); bildirimYoneticisi.createNotificationChannel(kanal ); } builder = new NotificationCompat.Builder(this, kanalId); builder.setContentTitle("Başlık") // gerekli .setContentText("İçerik") // gerekli .setSmallIcon(R.drawable.resim) // gerekli .setAutoCancel(true) // Bildirim tıklandıktan sonra kaybolur." .setContentIntent(gidilecekIntent); } else { // OREO Sürümü haricinde bu kod çalışacak. builder = new NotificationCompat.Builder(this); builder.setContentTitle("Başlık") // gerekli .setContentText("İçerik") // gerekli .setSmallIcon(R.drawable.resim) // gerekli .setContentIntent(gidilecekIntent) .setAutoCancel(true) // Bildirim tıklandıktan sonra kaybolur." .setPriority(Notification.PRIORITY_HIGH); } Intent broadcastIntent = new Intent(MainActivity.this,BildirimYakalayici.class) ; broadcastIntent.putExtra("bildirimNesnesi",builder .build()); final PendingIntent gidilecekBroadcast = PendingIntent.getBroadcast(this ,0 ,broadcastIntent ,PendingIntent.FLAG_UPDATE_CURRENT); final Calendar calendar = Calendar.getInstance(); final int saat = calendar.get(Calendar.HOUR_OF_DAY); final int dakika = calendar.get(Calendar.MINUTE); TimePickerDialog timePicker; timePicker = new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { calendar.setTimeInMillis(System.currentTimeMillis( )); calendar.add(Calendar.HOUR_OF_DAY,24); calendar.add(Calendar.MINUTE,60); AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); alarmManager.set(AlarmManager.RTC_WAKEUP,calendar. getTimeInMillis(),gidilecekBroadcast); } }, saat, dakika, true); timePicker.setTitle("Saat Seçiniz"); timePicker.setButton(DialogInterface.BUTTON_POSITI VE,"Ayarla",timePicker); timePicker.setButton(DialogInterface.BUTTON_NEGATI VE,"İptal",timePicker); timePicker.show();


Bu da broadcast receiver'ın kodları.

package com.example.myapplication;
import android.app.Notification;
import android.app.NotificationManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class BildirimYakalayici extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent)
{ NotificationManager bildirimYoneticisi = (NotificationManager)context.getSystemService(Cont ext.NOTIFICATION_SERVICE);
Notification bildirim = intent.getParcelableExtra("bildirimNesnesi"); bildirimYoneticisi.notify(1, bildirim); }}

Şimdiden cevaplarınız için teşekkür ederim.