android - use finger print sensor as bio metric -
i new android bio-metric integration.
is possible use android devices screen or fingerprint sensor biometric device users can login app without having use email or password.
this , this , this references.
is using external fingerprint scanner or biometric option or there alternative solution ?
this code i've used reference. please have @ , let me know how can users fingerprint.
mainactivity extends appcompatactivity { private fingerprintmanager fingerprintmanager; private keyguardmanager keyguardmanager; private keystore keystore; private keygenerator keygenerator; private static final string key_name = "example_key"; private cipher cipher; private fingerprintmanager.cryptoobject cryptoobject; @targetapi(build.version_codes.m) @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); keyguardmanager = (keyguardmanager) getsystemservice(keyguard_service); fingerprintmanager = (fingerprintmanager) getsystemservice(fingerprint_service); if (!keyguardmanager.iskeyguardsecure()) { toast.maketext(this, "lock screen security not enabled in settings", toast.length_long).show(); return; } if (activitycompat.checkselfpermission(this, manifest.permission.use_fingerprint) != packagemanager.permission_granted) { toast.maketext(this, "fingerprint authentication permission not enabled", toast.length_long).show(); return; } if (!fingerprintmanager.hasenrolledfingerprints()) { // happens when no fingerprints registered. toast.maketext(this, "register @ least 1 fingerprint in settings", toast.length_long).show(); return; } if (!fingerprintmanager.hasenrolledfingerprints()) { // happens when no fingerprints registered. toast.maketext(this, "register @ least 1 fingerprint in settings", toast.length_long).show(); return; } generatekey(); if (cipherinit()) { cryptoobject = new fingerprintmanager.cryptoobject(cipher); fingerprinthandler helper = new fingerprinthandler(this); helper.startauth(fingerprintmanager, cryptoobject); } } @targetapi(build.version_codes.m) protected void generatekey() { try { keystore = keystore.getinstance("androidkeystore"); } catch (exception e) { e.printstacktrace(); } try { keygenerator = keygenerator.getinstance( keyproperties.key_algorithm_aes, "androidkeystore"); } catch (nosuchalgorithmexception | nosuchproviderexception e) { throw new runtimeexception( "failed keygenerator instance", e); } try { keystore.load(null); keygenerator.init(new keygenparameterspec.builder(key_name, keyproperties.purpose_encrypt | keyproperties.purpose_decrypt) .setblockmodes(keyproperties.block_mode_cbc) .setuserauthenticationrequired(true) .setencryptionpaddings( keyproperties.encryption_padding_pkcs7) .build()); keygenerator.generatekey(); } catch (nosuchalgorithmexception | invalidalgorithmparameterexception | certificateexception | ioexception e) { throw new runtimeexception(e); } } @targetapi(build.version_codes.m) public boolean cipherinit() { try { cipher = cipher.getinstance( keyproperties.key_algorithm_aes + "/" + keyproperties.block_mode_cbc + "/" + keyproperties.encryption_padding_pkcs7); } catch (nosuchalgorithmexception | nosuchpaddingexception e) { throw new runtimeexception("failed cipher", e); } try { keystore.load(null); secretkey key = (secretkey) keystore.getkey(key_name, null); cipher.init(cipher.encrypt_mode, key); return true; } catch (keypermanentlyinvalidatedexception e) { return false; } catch (keystoreexception | certificateexception | unrecoverablekeyexception | ioexception | nosuchalgorithmexception | invalidkeyexception e) { throw new runtimeexception("failed init cipher", e); } } }
Comments
Post a Comment