diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index c0c8618aaf96e..721072804f899 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -2399,6 +2399,9 @@
false
com.android.deskclock/com.android.deskclock.Screensaver
+
+
+
false
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index f6393503ebd5c..f42ff01354859 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -2222,6 +2222,7 @@
+
diff --git a/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java b/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java
index 7168f3cf1f9cd..46e31ceb74857 100644
--- a/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java
+++ b/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java
@@ -116,6 +116,7 @@ public class DreamBackend {
private final boolean mDreamsEnabledByDefault;
private final boolean mDreamsActivatedOnSleepByDefault;
private final boolean mDreamsActivatedOnDockByDefault;
+ private final Set mDisabledDreams;
private final Set mSupportedComplications;
private final Set mDefaultEnabledComplications;
@@ -143,6 +144,10 @@ public class DreamBackend {
com.android.internal.R.bool.config_dreamsActivatedOnDockByDefault);
mDreamPreviewDefault = resources.getDrawable(
com.android.internal.R.drawable.default_dream_preview);
+ mDisabledDreams = Arrays.stream(resources.getStringArray(
+ com.android.internal.R.array.config_disabledDreamComponents))
+ .map(ComponentName::unflattenFromString)
+ .collect(Collectors.toSet());
mSupportedComplications =
Arrays.stream(resources.getIntArray(R.array.config_supportedDreamComplications))
@@ -166,14 +171,16 @@ public class DreamBackend {
PackageManager.GET_META_DATA);
List dreamInfos = new ArrayList<>(resolveInfos.size());
for (ResolveInfo resolveInfo : resolveInfos) {
- if (resolveInfo.serviceInfo == null) {
+ final ComponentName componentName = getDreamComponentName(resolveInfo);
+ if (componentName == null || mDisabledDreams.contains(componentName)) {
continue;
}
+
DreamInfo dreamInfo = new DreamInfo();
dreamInfo.caption = resolveInfo.loadLabel(pm);
dreamInfo.icon = resolveInfo.loadIcon(pm);
dreamInfo.description = getDescription(resolveInfo, pm);
- dreamInfo.componentName = getDreamComponentName(resolveInfo);
+ dreamInfo.componentName = componentName;
dreamInfo.isActive = dreamInfo.componentName.equals(activeDream);
final DreamMetadata dreamMetadata = getDreamMetadata(pm, resolveInfo);