Kimlik doğrulama veya yönetimden onay bekliyor.
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.