From 66b60af960e3bf2e3b425966026e4b8ed8d01a03 Mon Sep 17 00:00:00 2001 From: Yorke Lee Date: Fri, 8 Nov 2013 12:06:24 -0800 Subject: Treat unknown call types as missed calls Don't crash on unknown call types. Instead, just treat them as missed calls. Bug: 11586034 Change-Id: I4ca1721e1526ade36237251e7636d161ca8490be --- src/com/android/dialer/calllog/CallDetailHistoryAdapter.java | 2 +- src/com/android/dialer/calllog/CallLogGroupBuilder.java | 3 +-- src/com/android/dialer/calllog/CallTypeHelper.java | 12 ++++++++++-- src/com/android/dialer/calllog/CallTypeIconsView.java | 6 +++++- 4 files changed, 17 insertions(+), 6 deletions(-) (limited to 'src/com/android') diff --git a/src/com/android/dialer/calllog/CallDetailHistoryAdapter.java b/src/com/android/dialer/calllog/CallDetailHistoryAdapter.java index 52435aafe..8af3b82bb 100644 --- a/src/com/android/dialer/calllog/CallDetailHistoryAdapter.java +++ b/src/com/android/dialer/calllog/CallDetailHistoryAdapter.java @@ -150,7 +150,7 @@ public class CallDetailHistoryAdapter extends BaseAdapter { DateUtils.FORMAT_SHOW_WEEKDAY | DateUtils.FORMAT_SHOW_YEAR); dateView.setText(dateValue); // Set the duration - if (callType == Calls.MISSED_TYPE || callType == Calls.VOICEMAIL_TYPE) { + if (Calls.VOICEMAIL_TYPE == callType || CallTypeHelper.isMissedCallType(callType)) { durationView.setVisibility(View.GONE); } else { durationView.setVisibility(View.VISIBLE); diff --git a/src/com/android/dialer/calllog/CallLogGroupBuilder.java b/src/com/android/dialer/calllog/CallLogGroupBuilder.java index 1e4684e8f..213f1e774 100644 --- a/src/com/android/dialer/calllog/CallLogGroupBuilder.java +++ b/src/com/android/dialer/calllog/CallLogGroupBuilder.java @@ -78,8 +78,7 @@ public class CallLogGroupBuilder { shouldGroup = false; } else { // Incoming, outgoing, and missed calls group together. - shouldGroup = (callType == Calls.INCOMING_TYPE || callType == Calls.OUTGOING_TYPE || - callType == Calls.MISSED_TYPE); + shouldGroup = callType != Calls.VOICEMAIL_TYPE; } if (shouldGroup) { diff --git a/src/com/android/dialer/calllog/CallTypeHelper.java b/src/com/android/dialer/calllog/CallTypeHelper.java index 0f9b737f7..1c4f44f23 100644 --- a/src/com/android/dialer/calllog/CallTypeHelper.java +++ b/src/com/android/dialer/calllog/CallTypeHelper.java @@ -64,7 +64,7 @@ public class CallTypeHelper { return mVoicemailName; default: - throw new IllegalArgumentException("invalid call type: " + callType); + return mMissedName; } } @@ -86,7 +86,15 @@ public class CallTypeHelper { return mNewVoicemailColor; default: - throw new IllegalArgumentException("invalid call type: " + callType); + // Don't highlight calls of unknown types. They are treated as missed calls by + // the rest of the UI, but since they will never be marked as read by + // {@link CallLogQueryHandler}, just don't ever highlight them anyway. + return null; } } + + public static boolean isMissedCallType(int callType) { + return (callType != Calls.INCOMING_TYPE && callType != Calls.OUTGOING_TYPE && + callType != Calls.VOICEMAIL_TYPE); + } } diff --git a/src/com/android/dialer/calllog/CallTypeIconsView.java b/src/com/android/dialer/calllog/CallTypeIconsView.java index e83512861..a65f2c279 100644 --- a/src/com/android/dialer/calllog/CallTypeIconsView.java +++ b/src/com/android/dialer/calllog/CallTypeIconsView.java @@ -86,7 +86,11 @@ public class CallTypeIconsView extends View { case Calls.VOICEMAIL_TYPE: return mResources.voicemail; default: - throw new IllegalArgumentException("invalid call type: " + callType); + // It is possible for users to end up with calls with unknown call types in their + // call history, possibly due to 3rd party call log implementations (e.g. to + // distinguish between rejected and missed calls). Instead of crashing, just + // assume that all unknown call types are missed calls. + return mResources.missed; } } -- cgit v1.2.3