Merge "Fix package manager TransactionTooLargeExceptions" into lmp-mr1-dev
diff --git a/src/com/android/contacts/common/model/ContactLoader.java b/src/com/android/contacts/common/model/ContactLoader.java
index 998fb2d..59ab292 100644
--- a/src/com/android/contacts/common/model/ContactLoader.java
+++ b/src/com/android/contacts/common/model/ContactLoader.java
@@ -318,7 +318,7 @@
                 resultIsCached = true;
             } else {
                 if (uriCurrentFormat.getLastPathSegment().equals(Constants.LOOKUP_URI_ENCODED)) {
-                    result = loadEncodedContactEntity(uriCurrentFormat);
+                    result = loadEncodedContactEntity(uriCurrentFormat, mLookupUri);
                 } else {
                     result = loadContactEntity(resolver, uriCurrentFormat);
                 }
@@ -351,7 +351,22 @@
         }
     }
 
-    private Contact loadEncodedContactEntity(Uri uri) throws JSONException {
+    /**
+     * Parses a {@link Contact} stored as a JSON string in a lookup URI.
+     *
+     * @param lookupUri The contact information to parse .
+     * @return The parsed {@code Contact} information.
+     * @throws JSONException
+     */
+    public static Contact parseEncodedContactEntity(Uri lookupUri)  {
+        try {
+            return loadEncodedContactEntity(lookupUri, lookupUri);
+        } catch (JSONException je) {
+            return null;
+        }
+    }
+
+    private static Contact loadEncodedContactEntity(Uri uri, Uri lookupUri) throws JSONException {
         final String jsonString = uri.getEncodedFragment();
         final JSONObject json = new JSONObject(jsonString);
 
@@ -365,7 +380,7 @@
         final String photoUri = json.optString(Contacts.PHOTO_URI, null);
         final Contact contact = new Contact(
                 uri, uri,
-                mLookupUri,
+                lookupUri,
                 directoryId,
                 null /* lookupKey */,
                 -1 /* id */,
@@ -425,7 +440,7 @@
         return contact;
     }
 
-    private void processOneRecord(RawContact rawContact, JSONObject item, String mimetype)
+    private static void processOneRecord(RawContact rawContact, JSONObject item, String mimetype)
             throws JSONException {
         final ContentValues itemValues = new ContentValues();
         itemValues.put(Data.MIMETYPE, mimetype);
diff --git a/src/com/android/contacts/common/widget/SelectPhoneAccountDialogFragment.java b/src/com/android/contacts/common/widget/SelectPhoneAccountDialogFragment.java
index 86db174..0870254 100644
--- a/src/com/android/contacts/common/widget/SelectPhoneAccountDialogFragment.java
+++ b/src/com/android/contacts/common/widget/SelectPhoneAccountDialogFragment.java
@@ -26,6 +26,7 @@
 import android.content.DialogInterface;
 import android.os.Bundle;
 import android.telecom.TelecomManager;
+import android.telephony.PhoneNumberUtils;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -194,7 +195,9 @@
                 holder.numberTextView.setVisibility(View.GONE);
             } else {
                 holder.numberTextView.setVisibility(View.VISIBLE);
-                holder.numberTextView.setText(account.getAddress().getSchemeSpecificPart());
+                holder.numberTextView.setText(
+                        PhoneNumberUtils.ttsSpanAsPhoneNumber(
+                                account.getAddress().getSchemeSpecificPart()));
             }
             holder.imageView.setImageDrawable(account.createIconDrawable(getContext()));
             return rowView;