From bebba4478db75f4ce5082dc4944028a4f382ab40 Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Tue, 26 Jul 2016 17:54:05 -0700 Subject: [PATCH] Never disable DnD receiver to dislay condition correctly. Bug: 30360853 Change-Id: I3e470c2955d7f066970442e281f9d66b153b8d10 --- .../settings/dashboard/conditional/Condition.java | 14 ++++++++++++++ .../dashboard/conditional/DndCondition.java | 6 ++++++ 2 files changed, 20 insertions(+) diff --git a/src/com/android/settings/dashboard/conditional/Condition.java b/src/com/android/settings/dashboard/conditional/Condition.java index 1d48d5d6e92..758632e7524 100644 --- a/src/com/android/settings/dashboard/conditional/Condition.java +++ b/src/com/android/settings/dashboard/conditional/Condition.java @@ -38,6 +38,12 @@ public abstract class Condition { // All conditions must live in this package. Condition(ConditionManager manager) { mManager = manager; + Class receiverClass = getReceiverClass(); + if (receiverClass != null && shouldAlwaysListenToBroadcast()) { + PackageManager pm = mManager.getContext().getPackageManager(); + pm.setComponentEnabledSetting(new ComponentName(mManager.getContext(), receiverClass), + PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0 /* flag */); + } } void restoreState(PersistableBundle bundle) { @@ -93,6 +99,10 @@ public abstract class Condition { } private void onSilenceChanged(boolean silenced) { + if (shouldAlwaysListenToBroadcast()) { + // Don't try to disable BroadcastReceiver if we want it always on. + return; + } Class clz = getReceiverClass(); if (clz == null) { return; @@ -109,6 +119,10 @@ public abstract class Condition { return null; } + protected boolean shouldAlwaysListenToBroadcast() { + return false; + } + public boolean shouldShow() { return isActive() && !isSilenced(); } diff --git a/src/com/android/settings/dashboard/conditional/DndCondition.java b/src/com/android/settings/dashboard/conditional/DndCondition.java index 2a5aa8a4929..dcab2796f87 100644 --- a/src/com/android/settings/dashboard/conditional/DndCondition.java +++ b/src/com/android/settings/dashboard/conditional/DndCondition.java @@ -26,6 +26,7 @@ import android.os.PersistableBundle; import android.provider.Settings; import android.provider.Settings.Global; import android.service.notification.ZenModeConfig; + import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.settings.R; @@ -143,4 +144,9 @@ public class DndCondition extends Condition { } } } + + @Override + protected boolean shouldAlwaysListenToBroadcast() { + return true; + } }