Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 108ca20e authored by Hall Liu's avatar Hall Liu
Browse files

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
parent 717765f0
Loading
Loading
Loading
Loading
+14 −6
Original line number Diff line number Diff line
@@ -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)) {