mirror of
https://github.com/beemdevelopment/Aegis.git
synced 2025-05-04 20:30:36 +00:00
Let Android handle the lifecycle of BiometricPrompt
We previously stopped/started the biometric prompt every time in onPause/onResume, but that's apparently not necessary (and discouraged according to the documentation). This caused issues where the prompt would get stuck on some devices. While working on this I ran into another issue where AuthActivity was closed and reopened for no reason after rotation of the device, compounding the issue. This patch also fixes that.
This commit is contained in:
parent
6e54497492
commit
291fd5427b
2 changed files with 6 additions and 17 deletions
|
@ -144,7 +144,7 @@ public abstract class AegisActivity extends AppCompatActivity implements AegisAp
|
|||
* the vault was locked by an external trigger while the Activity was still open.
|
||||
*/
|
||||
private boolean isOrphan() {
|
||||
return !(this instanceof MainActivity) && _app.isVaultLocked();
|
||||
return !(this instanceof MainActivity) && !(this instanceof AuthActivity) && _app.isVaultLocked();
|
||||
}
|
||||
|
||||
protected Theme getCurrentTheme() {
|
||||
|
|
|
@ -145,6 +145,10 @@ public class AuthActivity extends AegisActivity {
|
|||
biometricsButton.setOnClickListener(v -> {
|
||||
showBiometricPrompt();
|
||||
});
|
||||
|
||||
if (_bioKey != null) {
|
||||
showBiometricPrompt();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -196,13 +200,7 @@ public class AuthActivity extends AegisActivity {
|
|||
public void onResume() {
|
||||
super.onResume();
|
||||
|
||||
if (_bioKey != null) {
|
||||
if (_prefs.isPasswordReminderNeeded()) {
|
||||
focusPasswordField();
|
||||
} else {
|
||||
showBiometricPrompt();
|
||||
}
|
||||
} else {
|
||||
if (_bioKey == null || _prefs.isPasswordReminderNeeded()) {
|
||||
focusPasswordField();
|
||||
}
|
||||
}
|
||||
|
@ -252,15 +250,6 @@ public class AuthActivity extends AegisActivity {
|
|||
_bioPrompt.authenticate(info, cryptoObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
|
||||
if (_bioPrompt != null) {
|
||||
_bioPrompt.cancelAuthentication();
|
||||
}
|
||||
}
|
||||
|
||||
private void finish(MasterKey key, boolean isSlotRepaired) {
|
||||
VaultFileCredentials creds = new VaultFileCredentials(key, _slots);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue