Use framework API to match voicemail number.

We were tracking the voicemail number within the application. This has
two shortcomings: it would not be updated automatically when its value
changes and the matching against it was only based on it being
identical, without taking into account other possible formatting
differences.

Switch to use PhoneNumberUtils.isVoiceMailNumber() instead, which is
what the Phone app is also using.

Bug: 5435925
Bug: 5416495
Change-Id: Ie56363c578cf5f6102fd6880ffce14f608ddaf0b
diff --git a/src/com/android/contacts/CallDetailActivity.java b/src/com/android/contacts/CallDetailActivity.java
index 012acc7..fc24bb4 100644
--- a/src/com/android/contacts/CallDetailActivity.java
+++ b/src/com/android/contacts/CallDetailActivity.java
@@ -218,7 +218,7 @@
         mResources = getResources();
 
         mCallTypeHelper = new CallTypeHelper(getResources());
-        mPhoneNumberHelper = new PhoneNumberHelper(mResources, getVoicemailNumber());
+        mPhoneNumberHelper = new PhoneNumberHelper(mResources);
         mPhoneCallDetailsHelper = new PhoneCallDetailsHelper(mResources, mCallTypeHelper,
                 mPhoneNumberHelper);
         mVoicemailStatusHelper = new VoicemailStatusHelperImpl();
@@ -596,12 +596,6 @@
         mContactPhotoManager.loadPhoto(mContactBackgroundView, photoUri, true, true);
     }
 
-    private String getVoicemailNumber() {
-        TelephonyManager telephonyManager =
-                (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
-        return telephonyManager.getVoiceMailNumber();
-    }
-
     static final class ViewEntry {
         public final String text;
         public final Intent primaryIntent;
diff --git a/src/com/android/contacts/calllog/CallLogAdapter.java b/src/com/android/contacts/calllog/CallLogAdapter.java
index 7e6770b..ea3e03e 100644
--- a/src/com/android/contacts/calllog/CallLogAdapter.java
+++ b/src/com/android/contacts/calllog/CallLogAdapter.java
@@ -194,7 +194,7 @@
     };
 
     public CallLogAdapter(Context context, CallFetcher callFetcher,
-            ContactInfoHelper contactInfoHelper, String voicemailNumber) {
+            ContactInfoHelper contactInfoHelper) {
         super(context);
 
         mContext = context;
@@ -209,7 +209,7 @@
         CallTypeHelper callTypeHelper = new CallTypeHelper(resources);
 
         mContactPhotoManager = ContactPhotoManager.getInstance(mContext);
-        mPhoneNumberHelper = new PhoneNumberHelper(resources, voicemailNumber);
+        mPhoneNumberHelper = new PhoneNumberHelper(resources);
         PhoneCallDetailsHelper phoneCallDetailsHelper = new PhoneCallDetailsHelper(
                 resources, callTypeHelper, mPhoneNumberHelper);
         mCallLogViewsHelper =
diff --git a/src/com/android/contacts/calllog/CallLogFragment.java b/src/com/android/contacts/calllog/CallLogFragment.java
index f66bbd0..5c6ce3a 100644
--- a/src/com/android/contacts/calllog/CallLogFragment.java
+++ b/src/com/android/contacts/calllog/CallLogFragment.java
@@ -39,7 +39,6 @@
 import android.os.ServiceManager;
 import android.provider.CallLog.Calls;
 import android.telephony.PhoneNumberUtils;
-import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.LayoutInflater;
@@ -62,7 +61,6 @@
 
     private CallLogAdapter mAdapter;
     private CallLogQueryHandler mCallLogQueryHandler;
-    private String mVoiceMailNumber;
     private boolean mScrollToTop;
 
     private boolean mShowOptionsMenu;
@@ -82,8 +80,6 @@
     public void onCreate(Bundle state) {
         super.onCreate(state);
 
-        mVoiceMailNumber = ((TelephonyManager) getActivity().getSystemService(
-                Context.TELEPHONY_SERVICE)).getVoiceMailNumber();
         mCallLogQueryHandler = new CallLogQueryHandler(getActivity().getContentResolver(), this);
         mKeyguardManager =
                 (KeyguardManager) getActivity().getSystemService(Context.KEYGUARD_SERVICE);
@@ -153,7 +149,7 @@
         super.onViewCreated(view, savedInstanceState);
         String currentCountryIso = ContactsUtils.getCurrentCountryIso(getActivity());
         mAdapter = new CallLogAdapter(getActivity(), this,
-                new ContactInfoHelper(getActivity(), currentCountryIso), mVoiceMailNumber);
+                new ContactInfoHelper(getActivity(), currentCountryIso));
         setListAdapter(mAdapter);
         getListView().setItemsCanFocus(true);
     }
@@ -330,11 +326,6 @@
         return mAdapter;
     }
 
-    @NeededForTesting
-    public String getVoiceMailNumber() {
-        return mVoiceMailNumber;
-    }
-
     @Override
     public void onVisibilityChanged(boolean visible) {
         if (mShowOptionsMenu != visible) {
diff --git a/src/com/android/contacts/calllog/DefaultVoicemailNotifier.java b/src/com/android/contacts/calllog/DefaultVoicemailNotifier.java
index c4fb36c..c5e8f91 100644
--- a/src/com/android/contacts/calllog/DefaultVoicemailNotifier.java
+++ b/src/com/android/contacts/calllog/DefaultVoicemailNotifier.java
@@ -33,7 +33,6 @@
 import android.net.Uri;
 import android.provider.CallLog.Calls;
 import android.provider.ContactsContract.PhoneLookup;
-import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import android.util.Log;
 
@@ -319,8 +318,6 @@
      * called from the main thread.
      */
     public static PhoneNumberHelper createPhoneNumberHelper(Context context) {
-        TelephonyManager telephonyManager =
-            (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
-        return new PhoneNumberHelper(context.getResources(), telephonyManager.getVoiceMailNumber());
+        return new PhoneNumberHelper(context.getResources());
     }
 }
diff --git a/src/com/android/contacts/calllog/PhoneNumberHelper.java b/src/com/android/contacts/calllog/PhoneNumberHelper.java
index 4d96f4f..20031b2 100644
--- a/src/com/android/contacts/calllog/PhoneNumberHelper.java
+++ b/src/com/android/contacts/calllog/PhoneNumberHelper.java
@@ -29,11 +29,9 @@
  */
 public class PhoneNumberHelper {
     private final Resources mResources;
-    private final String mVoicemailNumber;
 
-    public PhoneNumberHelper(Resources resources, String voicemailNumber) {
+    public PhoneNumberHelper(Resources resources) {
         mResources = resources;
-        mVoicemailNumber = voicemailNumber;
     }
 
     /** Returns true if it is possible to place a call to the given number. */
@@ -68,7 +66,7 @@
         if (number.equals(CallerInfo.PAYPHONE_NUMBER)) {
             return mResources.getString(R.string.payphone);
         }
-        if (PhoneNumberUtils.extractNetworkPortion(number.toString()).equals(mVoicemailNumber)) {
+        if (isVoicemailNumber(number)) {
             return mResources.getString(R.string.voicemail);
         }
         if (TextUtils.isEmpty(formattedNumber)) {
@@ -91,7 +89,7 @@
 
     /** Returns true if the given number is the number of the configured voicemail. */
     public boolean isVoicemailNumber(CharSequence number) {
-        return PhoneNumberUtils.extractNetworkPortion(number.toString()).equals(mVoicemailNumber);
+        return PhoneNumberUtils.isVoiceMailNumber(number.toString());
     }
 
     /** Returns true if the given number is a SIP address. */