Soru & Cevap

AlarmManager ile Bildirim Alma

18.10.2015 - 01:05

Merhaba arkadaşlar.

Geliştiridiğim bir uygulamada günde 1 kez veritabanından rastgele 1 veri seçmek üzere bana bildirim gönderiliyor. Fakat şöyle bir sorun vardı. Telefon kapanıp açıldığında AlarmManager da belirttiğim saat etkisizleşiyordu. Yani o saatte bildirim gelmiyordu. Bu sorunu AndroidManifest.xml dosyasında şu şekilde çözdüm

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <receiver android:name=".AlarmReceiver"  android:enabled="true">
        <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>

 

Fakat bu kez de şöyle bir sorun oluştu. Hem belirttiğim(yani olması gereken) saatte bildirim geliyor. Hem de telefon yeniden başlatıldığında(bu işlem ne zaman yapılırsa yapılsın) bildirim alıyorum.

 

Ben sadece belirttiğim saatte bildirimi almak istiyorum. Telefon yeniden başlatılsa bile belirttiğim saat dışında bildirim almak istemiyorum. Yani AlarmReceiver im sadece belirtilen saatte başlamalı. Bunu nasıl düzeltebilirim?

86 Görüntülenme

1 Cevap

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

picture-7541-1521024507.jpg
burhanaras
18.10.2015 - 01:28

Merhaba,

Android cihazlar kapandığında, cihazdaki bütün alarmları iptal eder işletim sistemi. Bu yüzden cihaz açıldığında tüm alarmları yeniden kurmak gerekir. Bunun yöntemi de senin yaptığın gibi android.intent.action.BOOT_COMPLETED broadcast'ini yakalayan bir BroadcastReceiver yazıp, onReceive metodu içinde alarmları yeniden kurmaktır. Sistem ayağa kalktığında, ActivityManager fırlatır bu broadcast'i.

Bu durumda senin AlarmReceiver.java'nın onReceive() metodunda yazdığın kod, çalıştığı an notification fırlatıyor demektir ki burada hata yaptığını gösterir. Bu methodun içinde yazdığın kısmı gözden geçirmen gerekecek. Çünkü durduk yere kendi notification fırlatmaz. Kodunu da yüklersen daha detaylı bakabiliriz.