Handles special numbers in call details page.
Some numbers (unknown, private, payphones, and voicemails) should be
shown using text instead of the row number strings.
Change-Id: I297d44bd762548f08c975adc1ba56fc4a9edd146
diff --git a/src/com/android/contacts/PhoneCallDetailsHelper.java b/src/com/android/contacts/PhoneCallDetailsHelper.java
index 6542f7d..fc96a89 100644
--- a/src/com/android/contacts/PhoneCallDetailsHelper.java
+++ b/src/com/android/contacts/PhoneCallDetailsHelper.java
@@ -17,6 +17,7 @@
package com.android.contacts;
import com.android.contacts.format.FormatUtils;
+import com.android.internal.telephony.CallerInfo;
import android.content.res.Resources;
import android.graphics.Typeface;
@@ -33,6 +34,7 @@
*/
public class PhoneCallDetailsHelper {
private final Resources mResources;
+ private final String mVoicemailNumber;
private final String mTypeIncomingText;
private final String mTypeOutgoingText;
private final String mTypeMissedText;
@@ -44,8 +46,9 @@
*
* @param resources used to look up strings
*/
- public PhoneCallDetailsHelper(Resources resources) {
+ public PhoneCallDetailsHelper(Resources resources, String voicemailNumber) {
mResources = resources;
+ mVoicemailNumber = voicemailNumber;
mTypeIncomingText = mResources.getString(R.string.type_incoming);
mTypeOutgoingText = mResources.getString(R.string.type_outgoing);
mTypeMissedText = mResources.getString(R.string.type_missed);
@@ -98,11 +101,11 @@
CharSequence nameText;
CharSequence numberText;
if (TextUtils.isEmpty(name)) {
- nameText = number;
+ nameText = getDisplayNumber(number);
numberText = "";
} else {
nameText = name;
- numberText = number;
+ numberText = getDisplayNumber(number);
if (callType != 0 && numberFormattedLabel != null) {
numberText = FormatUtils.applyStyleToSpan(Typeface.BOLD,
numberFormattedLabel + " " + number, 0,
@@ -124,4 +127,23 @@
views.mNumberView.setVisibility(View.GONE);
}
}
+
+ private CharSequence getDisplayNumber(CharSequence number) {
+ if (TextUtils.isEmpty(number)) {
+ return "";
+ }
+ if (number.equals(CallerInfo.UNKNOWN_NUMBER)) {
+ return mResources.getString(R.string.unknown);
+ }
+ if (number.equals(CallerInfo.PRIVATE_NUMBER)) {
+ return mResources.getString(R.string.private_num);
+ }
+ if (number.equals(CallerInfo.PAYPHONE_NUMBER)) {
+ return mResources.getString(R.string.payphone);
+ }
+ if (PhoneNumberUtils.extractNetworkPortion(number.toString()).equals(mVoicemailNumber)) {
+ return mResources.getString(R.string.voicemail);
+ }
+ return number;
+ }
}