Soru & Cevap

Timepicker'dan Alınan Bilgilerle Bildirim Göndermek

19.05.2020 - 03:38

Selamlar dostlar,

Timepicker'dan aldığım bilgilerle Alarm Manager sınıfını kullanarak uygulamaya bildirim göndermek istiyorum. Ama bir türlü başaramadım. Kodlarım aşağıda. Hatam nedir ?

MainActivity. java

package com.info.alarmtetiklemebildirim2018;

import android.app.Activity;
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.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.SystemClock;
import android.support.v4.app.NotificationCompat;
import android.view.View;
import android.widget.Button;
import android.widget.TimePicker;

import java.util.Calendar;

public class MainActivity extends Activity {

    private Calendar calendar;
    private Button buttonBildirimGonder;
    private TimePickerDialog timePickerDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());

        timePickerDialog = new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

            calendar.set(Calendar.HOUR_OF_DAY,hourOfDay);
            calendar.set(Calendar.MINUTE,minute);


            }
        }, Calendar.HOUR_OF_DAY, Calendar.MINUTE, true);

        buttonBildirimGonder = (Button) findViewById(R.id.buttonBildirimGonder);


        buttonBildirimGonder.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                zamanliliBildirimGonder();
            }
        });


    }

    
    private void zamanliliBildirimGonder() {

        NotificationCompat.Builder builder;

        NotificationManager bildirimYoneticisi =
                (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);

        Intent ıntent = new Intent(this,MainActivity.class);

        PendingIntent gidilecekIntent = PendingIntent.getActivity(this,1,ıntent,PendingIntent.FLAG_UPDATE_CURRENT);


        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

            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")
                    .setContentText("İçerik")
                    .setSmallIcon(R.drawable.resim)
                    .setAutoCancel(true)
                    .setContentIntent(gidilecekIntent);

        } else {

            builder = new NotificationCompat.Builder(this);

            builder.setContentTitle("Başlık")
                    .setContentText("İçerik")
                    .setSmallIcon(R.drawable.resim)
                    .setContentIntent(gidilecekIntent)
                    .setAutoCancel(true)
                    .setPriority(Notification.PRIORITY_HIGH);
        }


        Intent broadcastIntent =
                new Intent(MainActivity.this,BildirimYayinlayici.class);

        broadcastIntent.putExtra("bildirimNesnesi",builder.build());

        PendingIntent gidilecekBroadcast = PendingIntent.getBroadcast(this
                ,0
                ,broadcastIntent
                ,PendingIntent.FLAG_UPDATE_CURRENT);

        AlarmManager alarmManager =
                (AlarmManager) getSystemService(Context.ALARM_SERVICE);

        alarmManager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),gidilecekBroadcast);



    }



}

 

Burası da Broadcast Receiver sınıfım BildirimYakalayici.java

package com.info.alarmtetiklemebildirim2018;

import android.app.Notification;
import android.app.NotificationManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class BildirimYayinlayici extends BroadcastReceiver {

    public void onReceive(Context context, Intent intent) {

        NotificationManager bildirimYoneticisi = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);

        Notification bildirim = intent.getParcelableExtra("bildirimNesnesi");

        bildirimYoneticisi.notify(1, bildirim);

    }
}

 

19 Görüntülenme

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user noahpenny
noahpenny
19.05.2022 - 10:45

Zaman Seçici'nin kullanımı giderek daha etkili ve oldukça kararlı. aynen Penalty Shooters 2 oyununda kaleye vuran oyuncu gibi.

/sites/default/files/cevaplar/dosya/2022/571b9df027e449f78e3869ba19658754-1280x720.jpeg