Android Çalışma Anında İzin Alma (Runtime Permissions)

Merhaba, bu yazımızda Android 6.0’dan itibaren getirilen çalışma anında(veya çalışma zamanında) izin alma konusundan bahsedeceğim.

Eğer son günlerde uygulamalara göz atarsanız hep ihtiyacı olduğu anda sizden izin istiyor. Google artık anlamış olmalı ki eski izin sistemi pek güvenli değil. Neden diyecek olursanız eskiden uygulamayı marketten indirirken sadece izinler listeleniyor ve biz onayladığımız an uygulama verilen izinlere sahip oluyordu. Yeni sistemde uygulama ihtiyacı olduğu an sizden izin istiyor ve izni verdiğiniz an yetkiye sahip oluyor. Tabi bu önerilen kullanım şekli. Hala bazı geliştiriciler daha uygulamanın başından tüm izinleri istemektedir. Bu kullanıcı deneyimi ve güvenliği açısından uygulamaya zarardır. Her neyse teorik ve felsefik kısmını bırakalım işimize yoğunlaşalım.

Unutmadan 6.0 versiyonundan sonra eklenen bu özelliği biz bu makalede support(desteklenen) kütüphaneler ile kullanacağız. Yani ne demek bu derseniz; normalde yeni gelen özelliği kullanmanız için sürüm kontrolü yapmanız gerekir. Mesela 6.0 ve üstüyse bu özelliği kullan gibi. Ancak bunun yanında yayınlanan support kütüphaneler vardır ve size tüm sürümlerde çalışma garantisi verir.

Adım 1 – İzin var mı yok mu?

İzin istemeniz için öncelikle istediğiniz iznin verilip verilmediğine bakmalısınız doğal olarak. Örnek uygulamamızda kullanıcımızdan “SMS Okuma” ve “Belleğe Yazma” izni almak istiyoruz. Önce bu izinlerin verilip verilmediğini kontrol edelim.

Buradan aldığımız int değerleri önemli. Bunlar bize iznin var olup olmadığını anlamamızı sağlayacak.

Not: Android’de tüm izinleri şu bağlantıdan görebilirsiniz.

Adım 2 – İzin Yoksa İsteyelim

Bir önceki adımda aldığımız değerleri PackageManager‘da bulunan iki değerle karşılaştıracağız. Gerekli açıklamaları kod üzerinden verdim.

Kullanıcının karşısına bu tür bir diyalog çıkacaktır.
device-2016-07-03-082505
Adım 3 – Sonucu Yakala!

İzin istedikten sonra aktivite sonucunu yakalamamız işlem yapabilmek için önemlidir. Bunun için onRequestPermissionsResult(…) metodunu override etmemiz gerekiyor. Yine kod üzerinden açıklamalarla gidelim.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir