From e52fee8b8f189964763cff6f5febd16e2b9daf84 Mon Sep 17 00:00:00 2001 From: Fengjiang Li Date: Fri, 23 Feb 2024 14:26:52 -0800 Subject: [PATCH] Opt-in predicitive back before register the back button The predictive back infra checks the opt-in status when a callback is registered, and drops the registration if the Application / Activity is not opted-in Fix: 326627953 Test: manual Flag: ACONFIG launcher.enable_predictive_back_gesture DISABLED Change-Id: I8f2e2378d0bf966b3784cf08c12045509b6d5682 --- .../com/android/launcher3/uioverrides/QuickstepLauncher.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java index 722676a19c..a515109044 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java +++ b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java @@ -647,10 +647,13 @@ public class QuickstepLauncher extends Launcher { @Override protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); + // Back dispatcher is registered in {@link BaseActivity#onCreate}. For predictive back to + // work, we must opt-in BEFORE registering back dispatcher. So we need to call + // setEnableOnBackInvokedCallback() before super.onCreate() if (Utilities.ATLEAST_U && enablePredictiveBackGesture()) { getApplicationInfo().setEnableOnBackInvokedCallback(true); } + super.onCreate(savedInstanceState); if (savedInstanceState != null) { mPendingSplitSelectInfo = ObjectWrapper.unwrap( savedInstanceState.getIBinder(PENDING_SPLIT_SELECT_INFO));