From ef7ac4084e9d396e2b96a07faaccd232eca15648 Mon Sep 17 00:00:00 2001 From: twyen Date: Tue, 5 Jun 2018 11:18:37 -0700 Subject: Handle null carrier config for emergency call hint getCarrierConfig() is @Nullable. While the default implementation always return a bundle, this is not true for other carrier apps. ShadowTelephonyManager.getCarrierConfig() now return null as default to catch this behavior. TEST=TAP Bug: 80629471 Test: TAP PiperOrigin-RevId: 199327865 Change-Id: I7416bee3d5f5307919c6825fc74c26f25b6b001f --- .../dialer/app/calllog/LegacyVoicemailNotifier.java | 14 +++++++++----- java/com/android/dialer/dialpadview/DialpadFragment.java | 5 +++-- .../android/voicemail/impl/OmtpVvmCarrierConfigHelper.java | 3 +++ 3 files changed, 15 insertions(+), 7 deletions(-) (limited to 'java') diff --git a/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java b/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java index ccf12ae12..31e9edc6a 100644 --- a/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java +++ b/java/com/android/dialer/app/calllog/LegacyVoicemailNotifier.java @@ -21,6 +21,7 @@ import android.app.Notification; import android.app.PendingIntent; import android.content.Context; import android.os.Build.VERSION_CODES; +import android.os.PersistableBundle; import android.support.annotation.NonNull; import android.support.v4.os.BuildCompat; import android.telecom.PhoneAccount; @@ -98,11 +99,14 @@ public final class LegacyVoicemailNotifier { context .getResources() .getQuantityString(R.plurals.notification_voicemail_title, count, count); - boolean isOngoing = - pinnedTelephonyManager - .getCarrierConfig() - .getBoolean(CarrierConfigManager.KEY_VOICEMAIL_NOTIFICATION_PERSISTENT_BOOL); - + PersistableBundle config = pinnedTelephonyManager.getCarrierConfig(); + boolean isOngoing; + if (config == null) { + isOngoing = false; + } else { + isOngoing = + config.getBoolean(CarrierConfigManager.KEY_VOICEMAIL_NOTIFICATION_PERSISTENT_BOOL); + } String contentText; PendingIntent contentIntent; if (!TextUtils.isEmpty(voicemailNumber) && callVoicemailIntent != null) { diff --git a/java/com/android/dialer/dialpadview/DialpadFragment.java b/java/com/android/dialer/dialpadview/DialpadFragment.java index 8fb7533f4..2d0eff543 100644 --- a/java/com/android/dialer/dialpadview/DialpadFragment.java +++ b/java/com/android/dialer/dialpadview/DialpadFragment.java @@ -38,6 +38,7 @@ import android.net.Uri; import android.os.Build.VERSION; import android.os.Build.VERSION_CODES; import android.os.Bundle; +import android.os.PersistableBundle; import android.os.Trace; import android.provider.Contacts.People; import android.provider.Contacts.Phones; @@ -501,9 +502,9 @@ public class DialpadFragment extends Fragment return false; } TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class); + PersistableBundle config = telephonyManager.getCarrierConfig(); // A delay of -1 means wifi emergency call is available/the warning is not required. - if (telephonyManager.getCarrierConfig().getInt(KEY_EMERGENCY_NOTIFICATION_DELAY_INT, -1) - == -1) { + if (config == null || config.getInt(KEY_EMERGENCY_NOTIFICATION_DELAY_INT, -1) == -1) { return false; } diff --git a/java/com/android/voicemail/impl/OmtpVvmCarrierConfigHelper.java b/java/com/android/voicemail/impl/OmtpVvmCarrierConfigHelper.java index 3b97e3d8e..5185b8fd4 100644 --- a/java/com/android/voicemail/impl/OmtpVvmCarrierConfigHelper.java +++ b/java/com/android/voicemail/impl/OmtpVvmCarrierConfigHelper.java @@ -458,6 +458,9 @@ public class OmtpVvmCarrierConfigHelper { } PersistableBundle config = telephonyManager.getCarrierConfig(); + if (config == null) { + return null; + } if (TextUtils.isEmpty(config.getString(CarrierConfigManager.KEY_VVM_TYPE_STRING))) { return null; -- cgit v1.2.3