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
This commit is contained in:
Simon Wingrove
2024-04-04 12:41:07 +00:00
parent 4e32375f3d
commit abc6625a31

View File

@@ -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.
*
* <p>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();
}
}