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
diff --git a/packages/SettingsLib/ActivityEmbedding/Android.bp b/packages/SettingsLib/ActivityEmbedding/Android.bp
index fc82b79..2569198 100644
--- a/packages/SettingsLib/ActivityEmbedding/Android.bp
+++ b/packages/SettingsLib/ActivityEmbedding/Android.bp
@@ -14,6 +14,8 @@
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 7f17d26..44b3b4e 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 @@
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() {
}
}