summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/view/ViewRootImpl.java4
-rw-r--r--core/java/android/window/WindowOnBackInvokedDispatcher.java5
2 files changed, 9 insertions, 0 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index f430ec300b5b..2ff9ad346a71 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -11382,6 +11382,10 @@ public final class ViewRootImpl implements ViewParent,
sendBackKeyEvent(KeyEvent.ACTION_DOWN);
sendBackKeyEvent(KeyEvent.ACTION_UP);
};
+ if (mOnBackInvokedDispatcher.hasImeOnBackInvokedDispatcher()) {
+ Log.d(TAG, "Skip registering CompatOnBackInvokedCallback on IME dispatcher");
+ return;
+ }
mOnBackInvokedDispatcher.registerOnBackInvokedCallback(
OnBackInvokedDispatcher.PRIORITY_DEFAULT, mCompatOnBackInvokedCallback);
}
diff --git a/core/java/android/window/WindowOnBackInvokedDispatcher.java b/core/java/android/window/WindowOnBackInvokedDispatcher.java
index a8c2b2f28df4..8066f5085a01 100644
--- a/core/java/android/window/WindowOnBackInvokedDispatcher.java
+++ b/core/java/android/window/WindowOnBackInvokedDispatcher.java
@@ -357,6 +357,11 @@ public class WindowOnBackInvokedDispatcher implements OnBackInvokedDispatcher {
mImeDispatcher = imeDispatcher;
}
+ /** Returns true if a non-null {@link ImeOnBackInvokedDispatcher} has been set. **/
+ public boolean hasImeOnBackInvokedDispatcher() {
+ return mImeDispatcher != null;
+ }
+
/**
* Class used to check whether a callback can be registered or not. This is meant to be
* shared with {@link ProxyOnBackInvokedDispatcher} which needs to do the same checks.