Merge "Fix biometric activities launched twice" into main

This commit is contained in:
Treehugger Robot
2025-03-10 23:50:12 -07:00
committed by Android (Google) Code Review
2 changed files with 59 additions and 20 deletions

View File

@@ -23,7 +23,6 @@ import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import com.android.settings.biometrics.BiometricEnrollBase.RESULT_FINISHED
import com.android.settings.biometrics.combination.CombinedBiometricStatusUtils
import com.android.settings.overlay.FeatureFactory.Companion.featureFactory
class FaceEnroll: AppCompatActivity() {
@@ -39,18 +38,33 @@ class FaceEnroll: AppCompatActivity() {
private val enrollActivityProvider: FaceEnrollActivityClassProvider
get() = featureFactory.faceFeatureProvider.enrollActivityClassProvider
private var isLaunched = false
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
/**
* Logs the next activity to be launched, creates an intent for that activity,
* adds flags to forward the result, includes any existing extras from the current intent,
* starts the new activity and then finishes the current one
*/
Log.d("FaceEnroll", "forward to $nextActivityClass")
val nextIntent = Intent(this, nextActivityClass)
nextIntent.putExtras(intent)
startActivityForResult(nextIntent, 0)
if (savedInstanceState != null) {
isLaunched = savedInstanceState.getBoolean(KEY_IS_LAUNCHED, isLaunched)
}
if (!isLaunched) {
/**
* Logs the next activity to be launched, creates an intent for that activity,
* adds flags to forward the result, includes any existing extras from the current intent,
* starts the new activity and then finishes the current one
*/
Log.d("FaceEnroll", "forward to $nextActivityClass")
val nextIntent = Intent(this, nextActivityClass)
nextIntent.putExtras(intent)
startActivityForResult(nextIntent, 0)
isLaunched = true
}
}
override fun onSaveInstanceState(outState: Bundle) {
outState.putBoolean(KEY_IS_LAUNCHED, isLaunched)
super.onSaveInstanceState(outState)
}
override fun onActivityResult(
@@ -60,6 +74,7 @@ class FaceEnroll: AppCompatActivity() {
caller: ComponentCaller
) {
super.onActivityResult(requestCode, resultCode, data, caller)
isLaunched = false
if (intent.getBooleanExtra(
CombinedBiometricStatusUtils.EXTRA_LAUNCH_FROM_SAFETY_SOURCE_ISSUE, false)
&& resultCode != RESULT_FINISHED) {
@@ -68,4 +83,8 @@ class FaceEnroll: AppCompatActivity() {
setResult(resultCode, data)
finish()
}
private companion object {
const val KEY_IS_LAUNCHED = "isLaunched"
}
}

View File

@@ -62,18 +62,33 @@ open class FingerprintEnroll: AppCompatActivity() {
protected val enrollActivityProvider: FingerprintEnrollActivityClassProvider
get() = featureFactory.fingerprintFeatureProvider.getEnrollActivityClassProvider(this)
private var isLaunched = false
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
/**
* Logs the next activity to be launched, creates an intent for that activity,
* adds flags to forward the result, includes any existing extras from the current intent,
* starts the new activity and then finishes the current one
*/
Log.d("FingerprintEnroll", "forward to $nextActivityClass")
val nextIntent = Intent(this, nextActivityClass)
nextIntent.putExtras(intent)
startActivityForResult(nextIntent, 0)
if (savedInstanceState != null) {
isLaunched = savedInstanceState.getBoolean(KEY_IS_LAUNCHED, isLaunched)
}
if (!isLaunched) {
/**
* Logs the next activity to be launched, creates an intent for that activity,
* adds flags to forward the result, includes any existing extras from the current intent,
* starts the new activity and then finishes the current one
*/
Log.d("FingerprintEnroll", "forward to $nextActivityClass")
val nextIntent = Intent(this, nextActivityClass)
nextIntent.putExtras(intent)
startActivityForResult(nextIntent, 0)
isLaunched = true
}
}
override fun onSaveInstanceState(outState: Bundle) {
outState.putBoolean(KEY_IS_LAUNCHED, isLaunched)
super.onSaveInstanceState(outState)
}
override fun onActivityResult(
@@ -83,6 +98,7 @@ open class FingerprintEnroll: AppCompatActivity() {
caller: ComponentCaller
) {
super.onActivityResult(requestCode, resultCode, data, caller)
isLaunched = false
if (intent.getBooleanExtra(
CombinedBiometricStatusUtils.EXTRA_LAUNCH_FROM_SAFETY_SOURCE_ISSUE, false)
&& resultCode != BiometricEnrollBase.RESULT_FINISHED
@@ -92,4 +108,8 @@ open class FingerprintEnroll: AppCompatActivity() {
setResult(resultCode, data)
finish()
}
private companion object {
const val KEY_IS_LAUNCHED = "isLaunched"
}
}