diff --git a/src/com/android/settings/SettingsApplication.java b/src/com/android/settings/SettingsApplication.java index 7aa5af8b84c..a2f723e39ce 100644 --- a/src/com/android/settings/SettingsApplication.java +++ b/src/com/android/settings/SettingsApplication.java @@ -16,13 +16,18 @@ package com.android.settings; +import android.app.Activity; import android.app.Application; import com.android.settings.activityembedding.ActivityEmbeddingRulesController; +import java.lang.ref.WeakReference; + /** Settings application which sets up activity embedding rules for the large screen device. */ public class SettingsApplication extends Application { + private WeakReference mHomeActivity = new WeakReference<>(null); + @Override public void onCreate() { super.onCreate(); @@ -31,4 +36,12 @@ public class SettingsApplication extends Application { new ActivityEmbeddingRulesController(this); controller.initRules(); } + + public void setHomeActivity(Activity homeActivity) { + mHomeActivity = new WeakReference<>(homeActivity); + } + + public Activity getHomeActivity() { + return mHomeActivity.get(); + } } diff --git a/src/com/android/settings/activityembedding/ActivityEmbeddingProvider.java b/src/com/android/settings/activityembedding/ActivityEmbeddingProvider.java index 7585dce5b5f..764564351e1 100644 --- a/src/com/android/settings/activityembedding/ActivityEmbeddingProvider.java +++ b/src/com/android/settings/activityembedding/ActivityEmbeddingProvider.java @@ -16,6 +16,7 @@ package com.android.settings.activityembedding; +import android.app.Activity; import android.content.ContentProvider; import android.content.ContentValues; import android.database.Cursor; @@ -23,13 +24,17 @@ import android.net.Uri; import android.os.Bundle; import android.text.TextUtils; +import com.android.settings.SettingsApplication; + /** * A content provider for querying the state of activity embedding feature */ public class ActivityEmbeddingProvider extends ContentProvider { private static final String METHOD_IS_EMBEDDING_ACTIVITY_ENABLED = "isEmbeddingActivityEnabled"; + private static final String METHOD_IS_IN_SETTINGS_TWO_PANE = "isInSettingsTwoPane"; private static final String EXTRA_ENABLED_STATE = "enabled_state"; + private static final String EXTRA_TWO_PANE_STATE = "two_pane_state"; @Override public boolean onCreate() { @@ -43,6 +48,14 @@ public class ActivityEmbeddingProvider extends ContentProvider { bundle.putBoolean(EXTRA_ENABLED_STATE, ActivityEmbeddingUtils.isEmbeddingActivityEnabled(getContext())); return bundle; + } else if (TextUtils.equals(method, METHOD_IS_IN_SETTINGS_TWO_PANE)) { + final Activity homeActivity = + ((SettingsApplication) getContext().getApplicationContext()).getHomeActivity(); + final Bundle bundle = new Bundle(); + bundle.putBoolean(EXTRA_TWO_PANE_STATE, + homeActivity == null ? false + : ActivityEmbeddingUtils.isTwoPaneResolution(homeActivity)); + return bundle; } return null; } diff --git a/src/com/android/settings/homepage/SettingsHomepageActivity.java b/src/com/android/settings/homepage/SettingsHomepageActivity.java index ec3589c77c3..a2a6d3cb1ec 100644 --- a/src/com/android/settings/homepage/SettingsHomepageActivity.java +++ b/src/com/android/settings/homepage/SettingsHomepageActivity.java @@ -42,6 +42,7 @@ import androidx.fragment.app.FragmentTransaction; import com.android.settings.R; import com.android.settings.Settings; import com.android.settings.SettingsActivity; +import com.android.settings.SettingsApplication; import com.android.settings.Utils; import com.android.settings.accounts.AvatarViewMixin; import com.android.settings.activityembedding.ActivityEmbeddingRulesController; @@ -95,6 +96,7 @@ public class SettingsHomepageActivity extends FragmentActivity implements @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + ((SettingsApplication) getApplication()).setHomeActivity(this); setContentView(R.layout.settings_homepage_container); final View appBar = findViewById(R.id.app_bar_container);