From 5641d01a98a539b81de62260754f6ef757706089 Mon Sep 17 00:00:00 2001 From: Tsung-Mao Fang Date: Fri, 11 Feb 2022 22:10:43 +0800 Subject: [PATCH] Add two APIs in SettingsLibActivityEmbedding Add two APIs 1. isActivityEmbedded() knows whether current activity is embedded in the Settings app or not. 2. shouldHideBackButton knows whether current activity is suggested to show back button or not. Bug: 219000314 Test: Use the api in Settings app, and behavior is correct. Change-Id: If1d29a8d9bdb896b179275e13de649872a5b94fe --- .../SettingsLib/ActivityEmbedding/Android.bp | 2 ++ .../ActivityEmbeddingUtils.java | 33 +++++++++++++++++++ packages/SettingsLib/Android.bp | 1 - 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/packages/SettingsLib/ActivityEmbedding/Android.bp b/packages/SettingsLib/ActivityEmbedding/Android.bp index fc82b79399eff..2569198f96220 100644 --- a/packages/SettingsLib/ActivityEmbedding/Android.bp +++ b/packages/SettingsLib/ActivityEmbedding/Android.bp @@ -14,6 +14,8 @@ android_library { static_libs: [ "androidx.annotation_annotation", + "androidx.core_core", + "windowExtLib", "SettingsLibUtils", ], sdk_version: "system_current", diff --git a/packages/SettingsLib/ActivityEmbedding/src/com/android/settingslib/activityembedding/ActivityEmbeddingUtils.java b/packages/SettingsLib/ActivityEmbedding/src/com/android/settingslib/activityembedding/ActivityEmbeddingUtils.java index 7f17d26b156ae..44b3b4e8488ad 100644 --- a/packages/SettingsLib/ActivityEmbedding/src/com/android/settingslib/activityembedding/ActivityEmbeddingUtils.java +++ b/packages/SettingsLib/ActivityEmbedding/src/com/android/settingslib/activityembedding/ActivityEmbeddingUtils.java @@ -16,8 +16,14 @@ package com.android.settingslib.activityembedding; +import android.app.Activity; import android.content.Context; import android.content.Intent; +import android.provider.Settings; +import android.text.TextUtils; + +import androidx.core.os.BuildCompat; +import androidx.window.embedding.SplitController; import com.android.settingslib.utils.BuildCompatUtils; @@ -44,6 +50,33 @@ public class ActivityEmbeddingUtils { return false; } + /** + * Whether current activity is embedded in the Settings app or not. + */ + public static boolean isActivityEmbedded(Activity activity) { + return SplitController.getInstance().isActivityEmbedded(activity); + } + + /** + * Whether current activity is suggested to show back button or not. + */ + public static boolean shouldHideBackButton(Activity activity, boolean isSecondaryLayerPage) { + if (!BuildCompat.isAtLeastT()) { + return false; + } + if (!isSecondaryLayerPage) { + return false; + } + final String shouldHideBackButton = Settings.Global.getString(activity.getContentResolver(), + "settings_hide_secondary_page_back_button_in_two_pane"); + + if (TextUtils.isEmpty(shouldHideBackButton) + || TextUtils.equals("true", shouldHideBackButton)) { + return isActivityEmbedded(activity); + } + return false; + } + private ActivityEmbeddingUtils() { } } diff --git a/packages/SettingsLib/Android.bp b/packages/SettingsLib/Android.bp index 684f4dee9ac2c..7a5ea472b5326 100644 --- a/packages/SettingsLib/Android.bp +++ b/packages/SettingsLib/Android.bp @@ -48,7 +48,6 @@ android_library { "SettingsLibCollapsingToolbarBaseActivity", "SettingsLibTwoTargetPreference", "SettingsLibSettingsTransition", - "SettingsLibActivityEmbedding", "SettingsLibButtonPreference", "setupdesign", ],