diff options
Diffstat (limited to 'core/java/android/app/Activity.java')
| -rw-r--r-- | core/java/android/app/Activity.java | 52 |
1 files changed, 48 insertions, 4 deletions
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index a66681956233..8d54e91b93e4 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -120,6 +120,7 @@ import android.view.autofill.AutofillManager; import android.view.autofill.AutofillManager.AutofillClient; import android.view.autofill.AutofillPopupWindow; import android.view.autofill.IAutofillWindowPresenter; +import android.view.intelligence.IntelligenceManager; import android.widget.AdapterView; import android.widget.Toast; import android.widget.Toolbar; @@ -821,6 +822,10 @@ public class Activity extends ContextThemeWrapper /** The autofill manager. Always access via {@link #getAutofillManager()}. */ @Nullable private AutofillManager mAutofillManager; + /** The screen observation manager. Always access via {@link #getIntelligenceManager()}. */ + @Nullable private IntelligenceManager mIntelligenceManager; + + static final class NonConfigurationInstances { Object activity; HashMap<String, Object> children; @@ -994,7 +999,7 @@ public class Activity extends ContextThemeWrapper } /** - * (Create and) return the autofill manager + * (Creates, sets and) returns the autofill manager * * @return The autofill manager */ @@ -1006,6 +1011,18 @@ public class Activity extends ContextThemeWrapper return mAutofillManager; } + /** + * (Creates, sets, and ) returns the intelligence manager + * + * @return The intelligence manager + */ + @NonNull private IntelligenceManager getIntelligenceManager() { + if (mIntelligenceManager == null) { + mIntelligenceManager = getSystemService(IntelligenceManager.class); + } + return mIntelligenceManager; + } + @Override protected void attachBaseContext(Context newBase) { super.attachBaseContext(newBase); @@ -1081,6 +1098,12 @@ public class Activity extends ContextThemeWrapper } mRestoredFromBundle = savedInstanceState != null; mCalled = true; + + if (getIntelligenceManager() != null) { + //TODO(b/111276913): decide whether the screen_obs session id should be saved / restored + // in the activity bundle. + mIntelligenceManager.onActivityCreated(mToken, getComponentName()); + } } /** @@ -2047,6 +2070,10 @@ public class Activity extends ContextThemeWrapper } getApplication().dispatchActivityDestroyed(this); + + if (getIntelligenceManager() != null) { + mIntelligenceManager.onActivityDestroyed(); + } } /** @@ -6403,9 +6430,16 @@ public class Activity extends ContextThemeWrapper void dumpInner(@NonNull String prefix, @Nullable FileDescriptor fd, @NonNull PrintWriter writer, @Nullable String[] args) { - if (args != null && args.length > 0 && args[0].equals("--autofill")) { - dumpAutofillManager(prefix, writer); - return; + if (args != null && args.length > 0) { + // Handle special cases + switch (args[0]) { + case "--autofill": + dumpAutofillManager(prefix, writer); + return; + case "--intelligence": + dumpIntelligenceManager(prefix, writer); + return; + } } writer.print(prefix); writer.print("Local Activity "); writer.print(Integer.toHexString(System.identityHashCode(this))); @@ -6435,6 +6469,7 @@ public class Activity extends ContextThemeWrapper mHandler.getLooper().dump(new PrintWriterPrinter(writer), prefix); dumpAutofillManager(prefix, writer); + dumpIntelligenceManager(prefix, writer); ResourcesManager.getInstance().dump(prefix, writer); } @@ -6450,6 +6485,15 @@ public class Activity extends ContextThemeWrapper } } + void dumpIntelligenceManager(String prefix, PrintWriter writer) { + final IntelligenceManager im = getIntelligenceManager(); + if (im != null) { + im.dump(prefix, writer); + } else { + writer.print(prefix); writer.println("No IntelligenceManager"); + } + } + /** * Bit indicating that this activity is "immersive" and should not be * interrupted by notifications if possible. |
