Soru & Cevap

Haftanın belirli gününe nasıl alarm koyabilirim. ...

02.09.2016 - 08:19

Merhaba arkadaşlar benim geliştirdiğim bir uygulama da ders programı oluşturuluyor. Ders zamanı gelince bildirim vermek istiyorum.

Yani pazartesi saat 8 de ders varsa. Her Hafta saat 8 de ders zamanı geldi. diye bildirim oluşturmak istiyorum. Bunu alarmmaneger ve notificition ile yapıyorum. Tek seferlik alarm verebiliyorum. Ama tekrarlı bir türlü veremedim. Kodlar şöyle. Recevier kısmı çalıştığı için onu vermiyecem.

private void alarmla() {
        SQLiteDatabase db=activity.openOrCreateDatabase("SINIFD",activity.MODE_PRIVATE,null);
        Cursor c = db.rawQuery("select * from ders", null);
        if(c.getCount()>0){
            c.moveToFirst();

                do {
                AlarmManager alarmManager = (AlarmManager) activity.getSystemService(Context.ALARM_SERVICE);
                Toast.makeText(activity, c.getString(3).split(":")[0] + " " + c.getString(3).split(":")[1], Toast.LENGTH_LONG).show();
                Intent notificationIntent = new Intent("android.media.action.DISPLAY_NOTIFICATION");
                notificationIntent.addCategory("android.intent.category.DEFAULT");
                notificationIntent.putExtra("message", c.getString(1) + " dersi zamanı geldi. Kazanımlara ulaşmak için tıklayınız. İyi dersler.");
                notificationIntent.putExtra("gizli", c.getString(6));
                PendingIntent broadcast = PendingIntent.getBroadcast(activity, c.getInt(0), notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);

                  Calendar timeOff = Calendar.getInstance();
                  int days = guncek(c.getString(5),timeOff) + (7 - timeOff.get(Calendar.DAY_OF_WEEK)); // how many days until Sunday
                  timeOff.add(Calendar.DATE, days);
                 timeOff.set(Calendar.HOUR, Integer.parseInt(c.getString(3).split(":")[0]));  //buraya 22 geliyor databaseden
                 timeOff.set(Calendar.MINUTE,Integer.parseInt(c.getString(3).split(":")[1]));  //buraya 10 geliyor mesala
                    timeOff.set(Calendar.SECOND, 0);
                    timeOff.set(Calendar.MILLISECOND, 0);
                     alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, timeOff.getTimeInMillis(),AlarmManager.INTERVAL_DAY * 7, broadcast);
            






            } while (c.moveToNext());
            c.close();

        }
        db.close();
        Toast.makeText(activity,"Vay be ayar ",Toast.LENGTH_LONG).show();
    }
private int guncek(String i,Calendar ib){
//benim database de kayıdım pazartesi 0 salı 1..... diye gidiyor.
    switch(Integer.parseInt(i)+1){
        case 1:
            return ib.MONDAY;
        case 2:
            return ib.TUESDAY;
        case 3:
            return ib.WEDNESDAY;
        case 4:
            return ib.THURSDAY;
        case 5:
            return ib.FRIDAY;
        case 6:
            return ib.SATURDAY;
        case 7:
            return ib.SUNDAY;
        default:
            return 1;
    }

}

Database kısmında sorun yok zaman ayarlama da var. 

 

3 Görüntülenme

1 Cevap

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

Profile picture for user koraysari1996
koraysari1996
14.12.2019 - 11:29

selamlar,
https://stackoverflow.com/questions/36902667/how-to-schedule-notification-in-android
bu sayfadaki cevaplar sana yardımcı olabilir.