diff options
4 files changed, 17 insertions, 6 deletions
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; } } |