diff --git a/packages/SystemUI/src/com/android/keyguard/EmergencyButton.java b/packages/SystemUI/src/com/android/keyguard/EmergencyButton.java
index db203cf..7cf4a0e 100644
--- a/packages/SystemUI/src/com/android/keyguard/EmergencyButton.java
+++ b/packages/SystemUI/src/com/android/keyguard/EmergencyButton.java
@@ -80,6 +80,7 @@
 
         @Override
         public void onServiceStateChanged(int subId, ServiceState state) {
+            mServiceState = state;
             requestCellInfoUpdate();
             updateEmergencyCallButton();
         }
@@ -96,7 +97,8 @@
 
     private final boolean mIsVoiceCapable;
     private final boolean mEnableEmergencyCallWhileSimLocked;
-    private boolean mIsEmergencyCapable;
+    private boolean mIsCellAvailable;
+    private ServiceState mServiceState;
 
     public EmergencyButton(Context context) {
         this(context, null);
@@ -241,8 +243,7 @@
                 }
 
                 if (mContext.getResources().getBoolean(R.bool.kg_hide_emgcy_btn_when_oos)) {
-                    KeyguardUpdateMonitor monitor = Dependency.get(KeyguardUpdateMonitor.class);
-                    visible = visible && (!monitor.isOOS() || mIsEmergencyCapable);
+                    visible = visible && isEmergencyCapable();
                 }
             }
         }
@@ -292,12 +293,19 @@
             public void onCellInfo(List<CellInfo> cellInfos) {
                 if ( cellInfos == null || cellInfos.isEmpty()) {
                     Log.d(LOG_TAG, "requestCellInfoUpdate.onCellInfo is null or empty");
-                    mIsEmergencyCapable = false;
+                    mIsCellAvailable = false;
                 }else{
-                    mIsEmergencyCapable = true;
+                    mIsCellAvailable = true;
                 }
                 updateEmergencyCallButton();
             }
         });
     }
+
+    private boolean isEmergencyCapable() {
+        KeyguardUpdateMonitor monitor = Dependency.get(KeyguardUpdateMonitor.class);
+        return (!monitor.isOOS()
+                || mIsCellAvailable
+                || (mServiceState !=null && mServiceState.isEmergencyOnly()));
+    }
 }
