From 11ca484116c2be45ec2a6e857e84fa565dece0a9 Mon Sep 17 00:00:00 2001 From: Ta-wei Yen Date: Tue, 15 Mar 2016 17:49:14 -0700 Subject: Add default phone account fallback for voicemail notification Sometimes the accountComponentName and accountId field of the new voicemail will not be populated by the voicemail source, so a PhoneAccountHandle used to retrieve the voicemail ringtone can not be created. Previously we fallback to the default notification sound. In this CL we will attempt to get the voicemail ringtone from the default phone account before falling back to notification sound. Bug:21699149 Change-Id: Ia1c09f5aa32c000cca245c669304cacf4f792c01 --- .../dialer/calllog/DefaultVoicemailNotifier.java | 27 ++++++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/com/android/dialer/calllog/DefaultVoicemailNotifier.java b/src/com/android/dialer/calllog/DefaultVoicemailNotifier.java index af596863d..de6fc6a3d 100644 --- a/src/com/android/dialer/calllog/DefaultVoicemailNotifier.java +++ b/src/com/android/dialer/calllog/DefaultVoicemailNotifier.java @@ -30,6 +30,7 @@ import android.content.res.Resources; import android.net.Uri; import android.support.annotation.Nullable; import android.support.v4.util.Pair; +import android.telecom.PhoneAccount; import android.telecom.PhoneAccountHandle; import android.telephony.TelephonyManager; import android.text.TextUtils; @@ -43,6 +44,7 @@ import com.android.dialer.R; import com.android.dialer.calllog.CallLogNotificationsHelper.NewCall; import com.android.dialer.filterednumber.FilteredNumbersUtil; import com.android.dialer.list.ListsFragment; +import com.android.dialer.util.TelecomUtil; import java.util.Iterator; import java.util.List; @@ -200,7 +202,7 @@ public class DefaultVoicemailNotifier { names.get(callToNotify.number)); notificationBuilder.setTicker(msg); } - + Log.i(TAG, "Creating voicemail notification"); getNotificationManager().notify(NOTIFICATION_TAG, NOTIFICATION_ID, notificationBuilder.build()); } @@ -210,17 +212,31 @@ public class DefaultVoicemailNotifier { * for the given call. */ private Pair getNotificationInfo(@Nullable NewCall callToNotify) { + Log.v(TAG, "getNotificationInfo"); if (callToNotify == null) { + Log.i(TAG, "callToNotify == null"); return new Pair<>(null, 0); } - + PhoneAccountHandle accountHandle = null; if (callToNotify.accountComponentName == null || callToNotify.accountId == null) { - return new Pair<>(null, Notification.DEFAULT_ALL); - } + Log.v(TAG, "accountComponentName == null || callToNotify.accountId == null"); + accountHandle = TelecomUtil + .getDefaultOutgoingPhoneAccount(mContext, PhoneAccount.SCHEME_TEL); + if (accountHandle == null) { + Log.i(TAG, "No default phone account found, using default notification ringtone"); + return new Pair<>(null, Notification.DEFAULT_ALL); + } - PhoneAccountHandle accountHandle = new PhoneAccountHandle( + } else { + accountHandle = new PhoneAccountHandle( ComponentName.unflattenFromString(callToNotify.accountComponentName), callToNotify.accountId); + } + if (accountHandle.getComponentName() != null) { + Log.v(TAG, "PhoneAccountHandle.ComponentInfo:" + accountHandle.getComponentName()); + } else { + Log.i(TAG, "PhoneAccountHandle.ComponentInfo: null"); + } return new Pair<>( TelephonyManagerCompat.getVoicemailRingtoneUri( getTelephonyManager(), accountHandle), @@ -249,4 +265,5 @@ public class DefaultVoicemailNotifier { private TelephonyManager getTelephonyManager() { return (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE); } + } -- cgit v1.2.3