<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">
	<channel>
		<title>New &amp; Improved Fingerprint Authentication in Android Apps | Infinum</title>
		<atom:link href="https://infinum.com/blog/new-and-improved-fingerprint-authentication-in-android-apps/feed/" rel="self" type="application/rss+xml" />
		<link>https://infinum.com/blog/new-and-improved-fingerprint-authentication-in-android-apps/</link>
		<description>Building digital products</description>
		<lastBuildDate>Tue, 14 Apr 2026 10:32:35 +0000</lastBuildDate>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>

					<item>
				<image>
					<url>8127https://infinum.com/uploads/2019/10/new-and-improved-fingerprint-authentication-in-Android-apps-0.webp</url>
				</image>
				<title>New &#038; Improved Fingerprint Authentication in Android Apps</title>
				<link>https://infinum.com/blog/new-and-improved-fingerprint-authentication-in-android-apps/</link>
				<pubDate>Tue, 01 Oct 2019 14:25:00 +0000</pubDate>
				<dc:creator>Domagoj Korman</dc:creator>
				<guid isPermaLink="false">https://infinum.com/the-capsized-eight/new-and-improved-fingerprint-authentication-in-android-apps/</guid>
				<description>
					<![CDATA[<p>When Google released `BiometricPrompt`, we tried integrating it in our Android library for fingerprint authentication.</p>
<p>The post <a href="https://infinum.com/blog/new-and-improved-fingerprint-authentication-in-android-apps/">New &amp; Improved Fingerprint Authentication in Android Apps</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</description>
				<content:encoded>
					<![CDATA[<div
	class="wrapper"
	data-id="es-139"
	 data-animation-target='inner-items'>
		
			<div class="wrapper__inner">
			<div class="block-blog-content js-block-blog-content">
	
<div class="block-blog-content-sidebar" data-id="es-92">
	</div>

<div class="block-blog-content-main">
	
<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-95"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-93">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-94'
	>
	Google released the new <code>BiometricPrompt</code> as a replacement for <code>FingerprintManager</code> last September. We decided to test out whether we would be able to integrate it in our Android library which simplifies fingerprint authentication, called the Goldfinger–and whether a library like Goldfinger would even be necessary with the new API.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-98"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-96">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-97'
	>
	FingerprintManager vs. BiometricPrompt</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-101"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-99">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-100'
	>
	During Google I/O ’18, Google announced <code>BiometricPrompt</code> which is used as a replacement for <code>FingerprintManager</code>. <code>BiometricPrompt</code> should choose the most appropriate biometric (fingerprint, face, iris) and display system dialog so that users have consistent behavior across all applications.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-104"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-102">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-103'
	>
	<code>BiometricPrompt</code> was introduced as an Android P feature, but Google also mentioned backwards-compatible <code>BiometricPrompt</code>, similar to how <code>FingerprintManager</code> and <code>FingerprintManagerCompat</code> behave.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-107"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-105">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-106'
	>
	Google finally released the first alpha version of <code>androidx.biometrics</code> library last September. While we expected the development of the library to be fast, it was stuck in the alpha version for almost a year. There was even an <a href="https://issuetracker.google.com/issues/139861235">issue</a> open!</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-110"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-108">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-109'
	>
	At last, they released the <code>beta1</code> version in August. We tested the <code>beta1</code> version and were quite happy with how it works. There are several smaller issues, but those should be resolved by the time a stable version is released, hopefully.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-113"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-111">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-112'
	>
	Replacing FingerprintManager in Goldfinger</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-116"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-114">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-115'
	>
	Two years ago, we created an Android library that simplifies Fingerprint authentication called <a href="https://github.com/infinum/Android-Goldfinger">Goldfinger</a>. Our library was using deprecated <code>FingerprintManager</code> to that point, so we wanted to test out if we would be able to integrate <code>BiometricPrompt</code> in it, and whether a library like Goldfinger would even be neccessary with the new API.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-119"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-117">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-118'
	>
	We came to the conclusion that <code>BiometricPrompt</code> and <code>FingerprintManager</code> APIs are almost the same. The biggest improvement over <code>FingerprintManager</code> is that you don’t even need to know what <code>CryptoObject</code> is if you need simple user authentication without data encryption.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-122"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-120">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-121'
	>
	All other complexities regarding user authentication are still there–<code>CryptoObject</code> creation if a cipher is needed, cancel dispatched as an error after the developer invokes cancel himself, save and restore initialization vector, and others. For all those reasons, we decided to refactor Goldfinger’s internals to use the new <code>BiometricPrompt</code> API.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-125"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-123">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-124'
	>
	Welcome Goldfinger 2.0</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-128"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-126">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-127'
	>
	Nowadays, Goldfinger API uses <code>BiometricPrompt</code> and has a new API that requires <code>Goldfinger.PromptParams</code> instance. <code>Goldfinger.PromptParams</code> are constructed via a builder pattern and you give it all values that are required for constructing <code>BiometricPrompt</code>. Afterwards, Goldfinger encapsulates all biometric complexities for you.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-131"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-129">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-130'
	>
	It creates <code>CryptoObject</code> asynchronously, starts biometric authentication, saves and restores initialization vector, handles weird edge cases introduced by on-screen fingerprint scanners, handles all system exceptions and returns them in a single callback, as well as offers you a separate Rx module.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-134"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-132">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-133'
	>
	Feedback is welcome</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-137"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-135">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-136'
	>
	The <a href="https://github.com/infinum/Android-Goldfinger">current version</a> is still a release candidate so we are looking for potential improvements and suggestions from the community. We plan on releasing the final, stable version as soon as <code>androidx.biometrics</code> leaves beta–feel free to drop us a comment, suggestion or even a pull request so that we can prepare Goldfinger 2.0 to be the best possible.</p></div>	</div>
</div>
</div>		</div>
	</div><p>The post <a href="https://infinum.com/blog/new-and-improved-fingerprint-authentication-in-android-apps/">New &amp; Improved Fingerprint Authentication in Android Apps</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</content:encoded>
			</item>
		
	</channel>
</rss>