diff --git a/lawnchair/res/values-zh-rCN/strings.xml b/lawnchair/res/values-zh-rCN/strings.xml
index e88a650a99..d656ae9d2b 100644
--- a/lawnchair/res/values-zh-rCN/strings.xml
+++ b/lawnchair/res/values-zh-rCN/strings.xml
@@ -361,6 +361,7 @@
标签
从应用抽屉隐藏
建议
+ 在抽屉顶部展示建议的应用
Lawnchair 错误报告
%1$s 已崩溃
diff --git a/lawnchair/res/values/config.xml b/lawnchair/res/values/config.xml
index a459cb0e71..3999d9a10f 100644
--- a/lawnchair/res/values/config.xml
+++ b/lawnchair/res/values/config.xml
@@ -96,6 +96,7 @@
false
false
false
+ true
true
true
true
diff --git a/lawnchair/res/values/strings.xml b/lawnchair/res/values/strings.xml
index 3082df7407..b8c213db18 100644
--- a/lawnchair/res/values/strings.xml
+++ b/lawnchair/res/values/strings.xml
@@ -450,6 +450,8 @@
Hide from App Drawer
Suggestions
+ Show suggested apps at drawer top
+
%1$d%%
diff --git a/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt b/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt
index 9dcec5da4d..010cd4c744 100644
--- a/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt
+++ b/lawnchair/src/app/lawnchair/preferences2/PreferenceManager2.kt
@@ -227,6 +227,12 @@ class PreferenceManager2 private constructor(private val context: Context) : Pre
onSet = { reloadHelper.recreate() },
)
+ val showSuggestedAppsInDrawer = preference(
+ key = booleanPreferencesKey(name = "show_suggested_apps_at_drawer_top"),
+ defaultValue = context.resources.getBoolean(R.bool.config_default_show_suggested_apps_at_drawer_top),
+ onSet = { reloadHelper.recreate() },
+ )
+
val enableFontSelection = preference(
key = booleanPreferencesKey(name = "enable_font_selection"),
defaultValue = context.resources.getBoolean(R.bool.config_default_enable_font_selection),
diff --git a/lawnchair/src/app/lawnchair/ui/preferences/components/SuggestionsPreference.kt b/lawnchair/src/app/lawnchair/ui/preferences/components/SuggestionsPreference.kt
index 722640dc54..222a7db97d 100644
--- a/lawnchair/src/app/lawnchair/ui/preferences/components/SuggestionsPreference.kt
+++ b/lawnchair/src/app/lawnchair/ui/preferences/components/SuggestionsPreference.kt
@@ -6,6 +6,8 @@ import android.content.pm.PackageManager
import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
+import app.lawnchair.preferences.getAdapter
+import app.lawnchair.preferences2.preferenceManager2
import com.android.launcher3.R
@SuppressLint("WrongConstant")
@@ -23,5 +25,14 @@ fun SuggestionsPreference() {
context.startActivity(intent)
},
)
+ } else {
+ // On some devices, the Suggestions activity could not be found or PACKAGE_USAGE_STATS is not granted.
+
+ val prefs2 = preferenceManager2()
+ val showRecentAppsInDrawer = prefs2.showSuggestedAppsInDrawer.getAdapter()
+ SwitchPreference(
+ label = stringResource(id = R.string.show_suggested_apps_at_drawer_top),
+ adapter = showRecentAppsInDrawer,
+ )
}
}
diff --git a/quickstep/src/com/android/launcher3/appprediction/PredictionRowView.java b/quickstep/src/com/android/launcher3/appprediction/PredictionRowView.java
index 3510fbef38..31bb6958cd 100644
--- a/quickstep/src/com/android/launcher3/appprediction/PredictionRowView.java
+++ b/quickstep/src/com/android/launcher3/appprediction/PredictionRowView.java
@@ -43,11 +43,14 @@ import com.android.launcher3.model.data.ItemInfoWithIcon;
import com.android.launcher3.model.data.WorkspaceItemInfo;
import com.android.launcher3.touch.ItemLongClickListener;
import com.android.launcher3.views.ActivityContext;
+import com.patrykmichalik.opto.core.PreferenceExtensionsKt;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
+import app.lawnchair.preferences2.PreferenceManager2;
+
@TargetApi(Build.VERSION_CODES.P)
public class PredictionRowView
extends LinearLayout implements OnDeviceProfileChangeListener, FloatingHeaderRow {
@@ -66,6 +69,8 @@ public class PredictionRowView
private boolean mPredictionsEnabled = false;
private OnLongClickListener mOnIconLongClickListener = ItemLongClickListener.INSTANCE_ALL_APPS;
+ private final PreferenceManager2 prefs2 = PreferenceManager2.getInstance(getContext());
+
public PredictionRowView(@NonNull Context context) {
this(context, null);
}
@@ -97,9 +102,10 @@ public class PredictionRowView
}
private void updateVisibility() {
- setVisibility(mPredictionsEnabled ? VISIBLE : GONE);
+ boolean enabled = mPredictionsEnabled && PreferenceExtensionsKt.firstBlocking(prefs2.getShowSuggestedAppsInDrawer());
+ setVisibility(enabled ? VISIBLE : GONE);
if (mActivityContext.getAppsView() != null) {
- if (mPredictionsEnabled) {
+ if (enabled) {
mActivityContext.getAppsView().getAppsStore().registerIconContainer(this);
} else {
mActivityContext.getAppsView().getAppsStore().unregisterIconContainer(this);