Hide emergency button when OOS
Hide emergency button when OOS in lock screen
Change-Id: Ia3c360755ab74b2c688833f9972710304a195f65
diff --git a/packages/Keyguard/res/values/bools.xml b/packages/Keyguard/res/values/bools.xml
index 2b83787..abf4f00 100644
--- a/packages/Keyguard/res/values/bools.xml
+++ b/packages/Keyguard/res/values/bools.xml
@@ -17,4 +17,5 @@
<resources>
<bool name="kg_show_ime_at_screen_on">true</bool>
<bool name="kg_use_all_caps">true</bool>
+ <bool name="kg_hide_emgcy_btn_when_oos">false</bool>
</resources>
diff --git a/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java b/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java
index 1411aaa..e6497b5 100644
--- a/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java
+++ b/packages/Keyguard/src/com/android/keyguard/EmergencyButton.java
@@ -25,6 +25,7 @@
import android.os.SystemProperties;
import android.os.UserHandle;
import android.telecom.TelecomManager;
+import android.telephony.ServiceState;
import android.util.AttributeSet;
import android.view.View;
import android.widget.Button;
@@ -58,6 +59,11 @@
public void onPhoneStateChanged(int phoneState) {
updateEmergencyCallButton();
}
+
+ @Override
+ public void onServiceStateChanged(int sub, ServiceState state) {
+ updateEmergencyCallButton();
+ }
};
public interface EmergencyButtonCallback {
@@ -153,6 +159,11 @@
visible = mLockPatternUtils.isSecure(KeyguardUpdateMonitor.getCurrentUser()) ||
SystemProperties.getBoolean("persist.radio.emgcy_btn_onswipe", false);
}
+
+ if (mContext.getResources().getBoolean(R.bool.kg_hide_emgcy_btn_when_oos)) {
+ KeyguardUpdateMonitor monitor = KeyguardUpdateMonitor.getInstance(mContext);
+ visible = visible && !monitor.isOOS();
+ }
}
}
if (visible) {
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
index eabfc34..6d8b44c 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.java
@@ -1197,6 +1197,7 @@
KeyguardUpdateMonitorCallback cb = mCallbacks.get(j).get();
if (cb != null) {
cb.onRefreshCarrierInfo();
+ cb.onServiceStateChanged(subId, serviceState);
}
}
}
@@ -1423,6 +1424,21 @@
}
}
+ public boolean isOOS()
+ {
+ boolean ret = true;
+ for (int subId : mServiceStates.keySet()) {
+ ServiceState state = mServiceStates.get(subId);
+ if (((state.getVoiceRegState() != ServiceState.STATE_OUT_OF_SERVICE)
+ && (state.getVoiceRegState() != ServiceState.STATE_POWER_OFF))
+ || (state.isEmergencyOnly())) {
+ ret = false;
+ break;
+ }
+ }
+ return ret;
+ }
+
/**
* @return true if and only if the state has changed for the specified {@code slotId}
*/
diff --git a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java
index 0cdf999..91bca0e 100644
--- a/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java
+++ b/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java
@@ -20,6 +20,7 @@
import android.media.AudioManager;
import android.os.SystemClock;
import android.hardware.fingerprint.FingerprintManager;
+import android.telephony.ServiceState;
import android.telephony.TelephonyManager;
import android.view.WindowManagerPolicy;
@@ -123,6 +124,13 @@
public void onSimStateChanged(int subId, int slotId, IccCardConstants.State simState) { }
/**
+ * Called when the sevice state changes.
+ * @param subId
+ * @param serviceState
+ */
+ public void onServiceStateChanged(int sub, ServiceState state) { }
+
+ /**
* Called when the user's info changed.
*/
public void onUserInfoChanged(int userId) { }