Android uygulamaya parmak izi güvenliği ekleme

Kubra Harmankaya
4 min readSep 19, 2017

Android uygulamalara parmak izi okuma özelliğinin kodlanması üzerine tecrübelerimi paylaştığım bir yazıyı okumaktasınız. Android 6.0’dan itibaren parmak izi tanıma özelliği desteklenmektedir. Parmak izi okumanın nasıl uygulandığını Google’in bu örneğinde inceleyebilirsiniz. Ben bu yazımda kritik noktalardan ve onları nasıl çözdüğümden bahsediyor olacağım.

Emulator’den test edebilme

Öncelikle illa ki parmak izini destekleyen bir cihaza ihtiyacınız yok, emulatorden de test yapabilmeniz mümkün. Aşağıdaki komutu terminalde çalıştırarak yeni bir finger_id tanımlayabilirsiniz ve sonra bu finger_id ile emulatorden test edebilirsiniz.

Kullanıcılarım parmak izi okuma özelliğini nasıl kullanmaya başlar?

Uygulamanızda bu özelliği kullanabilmeniz için, telefonun güvenlik ayarlarından kullanıcı parmak izinin tanımlanmış olması gerekir. Parmak izi tanımlamak için Ayarlar->Güvenlik->Parmak izi tanımla adımlarını takip edelim.

Parmak izini tanımladıktan sonra kendi uygulamanızın ayarlar menüsünde parmak izi özelliğini enable/disable edebilirsiniz.

Bu menüde kontrol etmeniz gereken önemli noktalar var:

Cihazınızın sdk versiyonu 6.0’dan küçükse bu menüyü invisible yapmanız gerekir.

Peki cihazım 6.0’dan büyük, o zaman;

  1. Manifest dosyasında USE_FINGERPRINT izni eklenmiş mi?
  2. Cihaz parmak izi tanıma özelliğini destekliyor mu?
  3. Cihazda tanımlı parmak izi var mı?

kontrollerini yapmanız gerekir.

Not: Cihaz 6.0’dan büyük ancak parmak izi özelliğini desteklemiyor olabilir.

Bu kontrolleri yaparken FingerprintManager class’i size yardımcı olacaktır. Bu class’in 3 metodu bulunmaktadır.

IsHardwareDetected?

FingerprintManager class’indan oluşturduğunuz instance yardımı ile cihazın parmak izi tanıma sensörünün kontrolünü yapabilirsiniz. Eğer bulunmuyorsa parmak izi okuma özelliğini gizlemeniz gerekir.

USE_FINGERPRINT izni manifest dosyasında tanımlanmış mi?

Parmak izi okuma sensörünü kullanmak için manifest dosyasında gerekli iznin verilmiş olması gerekir. Kod tarafında “permission check” yapmayı unutmayalım.

Tanımlı parmak izi var mı?

Telefon parmak izi tanıma özelliğini destekliyor olabilir, izinler verilmiş olabilir. Bunlarla birlikte telefonda en az bir parmak izi tanımlı olmalıdır. Dolayısıyla hiç tanımlı parmak izi yokken ve en az 1 tane varken durumları için uygulama ayrı ayrı test edilmelidir. Bu kontrolü yaparken yine FingerprintManager class’inin hasEnrolledFingerprints metodundan yararlanırız.

Background’a düşmüş uygulama foregrounda gelince..

Benim en çok zaman harcadığım kısım bu oldu. Kullanıcı home butonuna basarak veya back butonuna basarak backgrounda gidebilir, uygulamanızın içinden chrome gibi tarayıcıları açabilir. Bütün bu durumları ayrı ayrı test etmeniz gerekir.

Peki herhangi bir activity açıkken backgroundan foregrounda geldiğini nasıl anlayacağız ? Bunun için buradaki çözümden yararlandım ve custom lifecycle classimi oluşturdum. Bu class Application.ActivityLifecycleCallbacks interface’ini implemente eder. Böylece her bir activity için onActivityStarted ve onActivityStopped metotlarına erişebilirim.

Custom ActivityLifecyleCallbacks class’ini aşağıdaki metod ile Application classina register etmeyi unutmayın.

Peki simdi uygulama backgrounddan foregrounda geldiğinde uygulamamı dinleyen broadcastin sendBroadcast metodunu trigger edebilirim. intent.getAction tanımladığım ACTION_BACKGROUND ve ACTION_FOREGROUND sabitleri sayesinde background mu foreground mu ayırt etmemi sağlar.

BaseActivity’nizde BroadcastReceiver’inizi tanımlayin. onReceive methodunu override edecektir. Burada uygulama background’a gittiğinde ve foregrounda geldiğinde yapmak istediğiniz işlemleri yapabilirsiniz.

Peki bu broadcastReceiver’i nerede register edeceğiz? Basit bir LocalBroadcastManager yardımcı olacaktır. BaseActivity’nizin onCreate metodunda registerReceiver metodu ile BroadcastReceiver’i register edebiliriz.

onDestroy metodunda da unregisterReceiver etmeniz gerekir.

Samsung Note 4 ve S5 Case’i

Bu cihazlarda parmak izi tanıma sensoru bulunmaktadır. Telefonun ayarlarından parmak izi tanımlayabiliyoruz. Ancak FingerprintManager’in isHardwareDetected metodu false dönmektedir. Default android API bu iki device’i desteklememektedir. Bu durumda linkteki çözüm yararlanabilirsiniz.

İkinci bir çözüm Google Analytics yardımıyla bu cihazları kullanan kullanıcı yüzdesini analiz etmektir. Benim çalıştığım projede yüzde çok çok az olduğu için bu cihazları desteklememeye karar verdik.

Umarım parmak izi okuma işlemini uygulayacak arkadaşlar için yardımcı bir yazı olmuştur :) Happy coding :)

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Kubra Harmankaya
Kubra Harmankaya

Written by Kubra Harmankaya

Android Developer, Entrepreneur, GDG

No responses yet

Write a response