Android’de Uyarı (Notification) Göndermek ve PendingIntent yapıları (Resimli Anlatım)

Merhaba, bu yazımda profesyonel Android uygulamalar yaparken illaki kullanacağınız bir yapıdan, uyarılardan (notification) bahsedeceğiz.

Uyarılar, uygulamaların kullanıcıyı kalıcı olarak bilgilendirmek için kullandığı yapılardır. Oluşan uyarılar sistem barında gözükür. Eski Android sürümlerinde kullanıcıyı bilgilendirmek için Toast mesajları kullanılıyordu fakat bu mesajlar ekranda birkaç saniye gözüküp kayboluyordu. Daha sonra kalıcı olarak uyarı göndermenin önemi anlaşılınca Android 2.2 sürümü ile birlikte mükemmel bir uyarı yapısına kavuştu. Bu kadar beğenmemin nedeni sistemin tüm uygulamalardan gelen uyarıları bir yerde toplaması ve uygulamaya PendingIntent dediğimiz yapılarla kalıcı olarak yetki sağlamasıdır. Yani uyarı gönderildikten sonra uyarı açıldığında uygulama kapalı dahi olsa yetkilerini uyarıya devretmektedir. Yani uyarı ile açılan aktivite, uygulamanın bütün yetkilerine sahiptir.

Pending Intent Nedir?

PendingIntent sayesinde uygulamalar yetkilerini güvenli şekilde daha sonra çalışacak yapılara devrederler. Mesela uyarı göndermek için yada alarm servisi ile birlikte bir aktiviteyi istenilen zamanda açmak için PendingIntent kullanılır. PendingIntent ile sadece aktiviteler değil servislerde başlatılabilir.

Örnek uygulamamız nasıl olacak?

Örnek uygulamamız 2 adet aktiviteden oluşacak. Ana aktivitede düğmeye basınca uyarı gönderilecek ve uyarı açılınca 2. aktivite açılacak. Bu uygulamamı Windows üzerinde geliştirmedim. Eclipse ana hatları ile aynı olduğu için kolayca anlaşılabiliyor. Daha önceki örnek uygulamalarımı Windows üzerinde yapmıştım. Proje oluşturma sırasında eğer sıkıntı yaşarsanız daha önceki yazılarıma bakabilirsiniz. Oluşturacağınız proje sürümü minimum 2.2 olmalıdır.

Uygulamamızı yapmaya başlayalım. Bir Android projesi oluşturalım, fakat versiyonunun en az 2.2 olmasına dikkat edelim.

Ana aktivitemizin ekranına aşağıdaki gibi bir adet düğme ekleyelim. Bu düğmeye basında aktivitemiz uyarı(notification) servisine uyarı gönderecek. Layout dosyasını res/layout içerisinde bulabilirsiniz.

Uyarı ile birlikte açılacak olan 2. aktivitemiz için ekran oluşturalım. Bunun için yukarıdaki ekranımızın bulunduğu yere, res/layout altına Android xml dosyası ekleyerek yapabilirsiniz.

2. aktivitemizi sisteme tanıtalım. Bunun için Android manifest dosyamızı aşağıdaki gibi düzenleyelim. Sisteme ana paket altında “ActivityTwo” adında bir aktivite oluşturacağımızı belirttik.

Ana aktivitemizi aşağıdaki gibi düzenleyelim. Burada düğmeye basılınca 2. aktiviteyi açıyormuş gibi Intent oluşturuyoruz. Daha sonra bu intenti bir aktivite için oluşturulmuş PendingIntent’e bağlıyoruz. Uyarıyı oluştururken FLAG_AUTO_CANCEL ile açılan uyarının bardan otomatik olarak silinmesini sağlıyoruz. setLatestEventInfo metodu ile varolan yetkilerimizi verip, oluşturduğumuz PendingIntenti uyarıya bağlıyoruz. Daha sonra uyarı servisine oluşturduğumuz uyarıyı ekliyoruz.

Ana aktivitemizin bulunduğu paketin altına, yeni class oluşturarak, manifest dosyasında belirttiğimiz 2. uygulamanın sınıfını oluşturuyoruz ve içeriğini aşağıdaki gibi düzenliyoruz. Bendeki yeri “src/com.Notification”.

Şimdi projeyi sağ tıklayıp Android projesi olarak  çalıştırarak uygulamayı görebiliriz. Fakat minimum 2.2′yi destekleyen bir AVD’mizin olması gereklidir. Eğer yoksa AVD manager’ı açarak bir adet uygun versiyonda sanal makine oluşurup, tekrar çalıştırmalısınız.