定数USE_FINGERPRINT
は APIレベル28で非推奨 であり、同じAPIレベルで追加されたより一般的なUSE_BIOMETRIC
を使用する必要があります。
マニフェストでこれらの定数を交換すると、FingerprintManagerCompat.from(context).isHardwareDetected()
を呼び出すときにエラーが発生します。
エラーは:
必要な許可がありません-USE_FINGERPRINT
これは、28.0.0-rc3サポートv4 libのFingerprintManagerCompat
の@RequiresPermission("Android.permission.USE_FINGERPRINT")
アノテーションが原因で発生します。
これは無視して新しい許可を使用し続けることができますか?
私は同じ問題に直面しました、短い答えは、あなたがonlyあなたのアプリで指紋認証をサポートしたい限り、廃止を無視することです。
google dev blog で述べたように、API 28 googleは新しい biometrics API を提供しているため、バイオメトリック認証のプロセス全体を簡素化します。これらは、auth-dialog用のシンプルなビルダーを提供します。さらに、顔と虹彩の検出もサポートしています。サポートする場合は時間の問題であり、おそらくアップグレードする価値があるかもしれません。
私がこれまでに発見した唯一の欠点は、たとえば指紋ハードウェアが利用できる場合、認証プロセスを開始してこれを確認し、 エラーコールバック を待つ必要があります。廃止された指紋APIは、代わりに isHardwareDetected()
または hasEnrolledFingerprints()
のようなメソッドを提供します。この場合、この情報に依存している場合、おそらくアプリケーションを再設計する必要があります。これらのメソッドが非推奨になった理由はおそらく、指紋のみをサポートしているため、アップグレードすることは悪い考えではありません。
GoogleはAPI 28以下のデバイスにcompat'androidx.biometric:biometric:1.0.0-alpha02'
バージョンも提供しているため、この依存関係をインポートすることで、単にUSE_BIOMETRIC
パーミッションに切り替えることができますアプリの他の部分を変更することなく、警告に悩まされることはもうありません。アルファ段階のみなので、注意して使用します。したがって、生体認証APIの何も使用しない限り、追加の生体認証方法をサポートする場合は、単に問題を無視して再度直面することもできます。
EDIT:現在、compatライブラリのベータ版がリリースされています'androidx.biometric:biometric:1.0.0-beta01'
。詳細については、 こちらをチェック 。
biometrics API は、エラー処理のためのBiometricConstantsを提供します
override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {
super.onAuthenticationError(errorCode, errString)
//The device does not have a biometric sensor.
if (errorCode == BiometricPrompt.ERROR_HW_NOT_PRESENT){
//Do something
}
}