diff options
| -rw-r--r-- | core/java/android/app/Application.java | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/core/java/android/app/Application.java b/core/java/android/app/Application.java index 2767b43a119c..6a50e74ca3a4 100644 --- a/core/java/android/app/Application.java +++ b/core/java/android/app/Application.java @@ -616,9 +616,8 @@ public class Application extends ContextWrapper implements ComponentCallbacks2 { Log.v(TAG, "getAutofillClient(): null on super, trying to find activity thread"); } // Okay, ppl use the application context when they should not. This breaks - // autofill among other things. We pick the focused activity since autofill - // interacts only with the currently focused activity and we need the fill - // client only if a call comes from the focused activity. Sigh... + // autofill among other things. Below is a mitigation to find the top resumed + // activity. final ActivityThread activityThread = ActivityThread.currentActivityThread(); if (activityThread == null) { return null; @@ -634,16 +633,27 @@ public class Application extends ContextWrapper implements ComponentCallbacks2 { if (activity == null) { continue; } + if (record.isTopResumedActivity) { + if (android.view.autofill.Helper.sVerbose) { + Log.v(TAG, "getAutofillClient(): found top resumed activity for " + this + + ": " + activity); + } + return activity.getAutofillClient(); + } + // As a back up option, we pick the focused activity since autofill interacts only + // with the currently focused activity and we need the fill client only if a call + // comes from the focused activity. if (activity.getWindow().getDecorView().hasFocus()) { if (android.view.autofill.Helper.sVerbose) { - Log.v(TAG, "getAutofillClient(): found activity for " + this + ": " + activity); + Log.v(TAG, "getAutofillClient(): found focused activity for " + this + + ": " + activity); } return activity.getAutofillClient(); } } if (android.view.autofill.Helper.sVerbose) { Log.v(TAG, "getAutofillClient(): none of the " + activityCount + " activities on " - + this + " have focus"); + + this + " are top resumed nor have focus"); } return null; } |