From 72abcdaec706c682c122af0f196286a9f96c18e2 Mon Sep 17 00:00:00 2001 From: Adrian Roos Date: Tue, 6 Dec 2016 14:48:43 -0800 Subject: [PATCH] EmergencyCryptkeeperText: Make sure we update if airplane mode changes Fixes a race condition that could case the emergency text to show when it should not, if airplane mode was queried before it was set by the radio layer. Change-Id: I146f2877e300d105d8a53af130be46b02ec965b2 Test: Boot into cryptkeeper with a SIM, verify that it does not show 'Emergency Calls Only' until emergency call is initiated. Fixes: 33278862 Fixes: 32063642 --- .../statusbar/policy/EmergencyCryptkeeperText.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/EmergencyCryptkeeperText.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/EmergencyCryptkeeperText.java index 8abfb89b3f694..a2d1baf96da8d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/EmergencyCryptkeeperText.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/EmergencyCryptkeeperText.java @@ -17,6 +17,7 @@ package com.android.systemui.statusbar.policy; import android.annotation.Nullable; +import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; @@ -41,12 +42,20 @@ import java.util.List; public class EmergencyCryptkeeperText extends TextView { private KeyguardUpdateMonitor mKeyguardUpdateMonitor; - private KeyguardUpdateMonitorCallback mCallback = new KeyguardUpdateMonitorCallback() { + private final KeyguardUpdateMonitorCallback mCallback = new KeyguardUpdateMonitorCallback() { @Override public void onPhoneStateChanged(int phoneState) { update(); } }; + private final BroadcastReceiver mReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + if (Intent.ACTION_AIRPLANE_MODE_CHANGED.equals(intent.getAction())) { + update(); + } + } + }; public EmergencyCryptkeeperText(Context context, @Nullable AttributeSet attrs) { super(context, attrs); @@ -58,6 +67,8 @@ public class EmergencyCryptkeeperText extends TextView { super.onAttachedToWindow(); mKeyguardUpdateMonitor = KeyguardUpdateMonitor.getInstance(mContext); mKeyguardUpdateMonitor.registerCallback(mCallback); + getContext().registerReceiver(mReceiver, + new IntentFilter(Intent.ACTION_AIRPLANE_MODE_CHANGED)); update(); } @@ -67,6 +78,7 @@ public class EmergencyCryptkeeperText extends TextView { if (mKeyguardUpdateMonitor != null) { mKeyguardUpdateMonitor.removeCallback(mCallback); } + getContext().unregisterReceiver(mReceiver); } public void update() {