From abc6625a31e7a6efab3941e5aedd943cd7dcd6d4 Mon Sep 17 00:00:00 2001 From: Simon Wingrove Date: Thu, 4 Apr 2024 12:41:07 +0000 Subject: [PATCH] Use trampoline for FaceEnrollIntroductionInternal This gives activity embedding logic a chance to notice what taskfragment the elements should be in, and prevents a bug where the topmost activity can dissapear under the stack. Test: Manual Bug: 324018644 Change-Id: Iea8d367247b13ffe66f4558be49e8060fb7db4c5 --- .../face/FaceEnrollIntroductionInternal.java | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/biometrics/face/FaceEnrollIntroductionInternal.java b/src/com/android/settings/biometrics/face/FaceEnrollIntroductionInternal.java index 7dd29da3aea..51d3a3a806d 100644 --- a/src/com/android/settings/biometrics/face/FaceEnrollIntroductionInternal.java +++ b/src/com/android/settings/biometrics/face/FaceEnrollIntroductionInternal.java @@ -16,8 +16,34 @@ package com.android.settings.biometrics.face; +import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME; + +import android.content.Intent; +import android.os.Bundle; + +import androidx.fragment.app.FragmentActivity; + /** * Wrapper of {@link FaceEnrollIntroduction} to use with a pre-defined task affinity. + * + *

Trampolines over to FaceEnrollIntroduction - doing this as a trampoline rather than having + * this activity extend FaceEnrollIntroduction works around b/331157120. */ -public class FaceEnrollIntroductionInternal extends FaceEnrollIntroduction { +public class FaceEnrollIntroductionInternal extends FragmentActivity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (isFinishing()) { + return; + } + + // Copy our intent to grab all extras. Drop flags so we don't start new tasks twice. + Intent trampoline = new Intent(getIntent()); + trampoline.setFlags(0); + + // Trampoline to the intended activity, and finish + trampoline.setClassName(SETTINGS_PACKAGE_NAME, FaceEnrollIntroduction.class.getName()); + startActivity(trampoline); + finish(); + } }