From 108ca20ea45017ca1984d14b4e5549596f7694db Mon Sep 17 00:00:00 2001 From: Hall Liu Date: Mon, 24 Jul 2017 15:19:04 -0700 Subject: [PATCH] Check TTY status at bringup If Telecom gets initialized before the status bar, the receiver in PhoneStatusBarPolicy may miss the TTY status intent that Telecom sends out. Make a call to TelecomManager#getCurrentTtyMode to explicitly check in order to show the icon correctly. Change-Id: I51b33c3fcef83a1519b07584095440d8f01ed0cb Fixes: 62475394 Test: manual --- .../statusbar/phone/PhoneStatusBarPolicy.java | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java index f3ba5aaf887d0..d1ef035df34a8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java @@ -196,8 +196,7 @@ public class PhoneStatusBarPolicy implements Callback, Callbacks, } // TTY status - mIconController.setIcon(mSlotTty, R.drawable.stat_sys_tty_mode, null); - mIconController.setIconVisibility(mSlotTty, false); + updateTTY(); // bluetooth status updateBluetooth(); @@ -419,9 +418,17 @@ public class PhoneStatusBarPolicy implements Callback, Callbacks, mIconController.setIconVisibility(mSlotBluetooth, bluetoothEnabled); } - private final void updateTTY(Intent intent) { - int currentTtyMode = intent.getIntExtra(TelecomManager.EXTRA_CURRENT_TTY_MODE, - TelecomManager.TTY_MODE_OFF); + private final void updateTTY() { + TelecomManager telecomManager = + (TelecomManager) mContext.getSystemService(Context.TELECOM_SERVICE); + if (telecomManager == null) { + updateTTY(TelecomManager.TTY_MODE_OFF); + } else { + updateTTY(telecomManager.getCurrentTtyMode()); + } + } + + private final void updateTTY(int currentTtyMode) { boolean enabled = currentTtyMode != TelecomManager.TTY_MODE_OFF; if (DEBUG) Log.v(TAG, "updateTTY: enabled: " + enabled); @@ -754,7 +761,8 @@ public class PhoneStatusBarPolicy implements Callback, Callbacks, } else if (action.equals(TelephonyIntents.ACTION_SIM_STATE_CHANGED)) { updateSimState(intent); } else if (action.equals(TelecomManager.ACTION_CURRENT_TTY_MODE_CHANGED)) { - updateTTY(intent); + updateTTY(intent.getIntExtra(TelecomManager.EXTRA_CURRENT_TTY_MODE, + TelecomManager.TTY_MODE_OFF)); } else if (action.equals(Intent.ACTION_MANAGED_PROFILE_AVAILABLE) || action.equals(Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE) || action.equals(Intent.ACTION_MANAGED_PROFILE_REMOVED)) {