diff --git a/src/com/android/providers/blockednumber/BlockedNumberProvider.java b/src/com/android/providers/blockednumber/BlockedNumberProvider.java
index 69291ff..864f08a 100644
--- a/src/com/android/providers/blockednumber/BlockedNumberProvider.java
+++ b/src/com/android/providers/blockednumber/BlockedNumberProvider.java
@@ -531,23 +531,33 @@
 
     private boolean shouldShowEmergencyCallNotification() {
         return isEnhancedCallBlockingEnabledByPlatform()
-                && isAnyEnhancedBlockingSettingEnabled()
+                && (isShowCallBlockingDisabledNotificationAlways()
+                        || isAnyEnhancedBlockingSettingEnabled())
                 && getBlockSuppressionStatus().isSuppressed
                 && getEnhancedBlockSetting(
                         SystemContract.ENHANCED_SETTING_KEY_SHOW_EMERGENCY_CALL_NOTIFICATION);
     }
 
-    private boolean isEnhancedCallBlockingEnabledByPlatform() {
+    private PersistableBundle getCarrierConfig() {
         CarrierConfigManager configManager = (CarrierConfigManager) getContext().getSystemService(
                 Context.CARRIER_CONFIG_SERVICE);
         PersistableBundle carrierConfig = configManager.getConfig();
         if (carrierConfig == null) {
             carrierConfig = configManager.getDefaultConfig();
         }
-        return carrierConfig.getBoolean(
+        return carrierConfig;
+    }
+
+    private boolean isEnhancedCallBlockingEnabledByPlatform() {
+        return getCarrierConfig().getBoolean(
                 CarrierConfigManager.KEY_SUPPORT_ENHANCED_CALL_BLOCKING_BOOL);
     }
 
+    private boolean isShowCallBlockingDisabledNotificationAlways() {
+        return getCarrierConfig().getBoolean(
+                CarrierConfigManager.KEY_SHOW_CALL_BLOCKING_DISABLED_NOTIFICATION_ALWAYS_BOOL);
+    }
+
     private boolean isAnyEnhancedBlockingSettingEnabled() {
         return getEnhancedBlockSetting(SystemContract.ENHANCED_SETTING_KEY_BLOCK_UNREGISTERED)
                 || getEnhancedBlockSetting(SystemContract.ENHANCED_SETTING_KEY_BLOCK_PRIVATE)
