Merge change 20739

* changes:
  Fix issue 2045983 ToneGenerator: fix void statement.
diff --git a/core/java/com/android/internal/widget/ContactHeaderWidget.java b/core/java/com/android/internal/widget/ContactHeaderWidget.java
index e4aaf38..eac5d2d 100644
--- a/core/java/com/android/internal/widget/ContactHeaderWidget.java
+++ b/core/java/com/android/internal/widget/ContactHeaderWidget.java
@@ -52,7 +52,8 @@
 
 
 /* Widget that is used across system apps for displaying a header banner with contact info */
-public class ContactHeaderWidget extends FrameLayout implements View.OnClickListener {
+public class ContactHeaderWidget extends FrameLayout implements View.OnClickListener,
+        View.OnLongClickListener {
 
     private static final String TAG = "ContactHeaderWidget";
 
@@ -71,6 +72,13 @@
 
     protected ContentResolver mContentResolver;
 
+    public interface ContactHeaderListener {
+        public void onPhotoLongClick(View view);
+        public void onDisplayNameLongClick(View view);
+    }
+
+    private ContactHeaderListener mListener;
+
     //Projection used for the summary info in the header.
     protected static final String[] HEADER_PROJECTION = new String[] {
         Contacts.DISPLAY_NAME,
@@ -125,6 +133,8 @@
         inflater.inflate(R.layout.contact_header, this);
 
         mDisplayNameView = (TextView) findViewById(R.id.name);
+        mDisplayNameView.setOnLongClickListener(this);
+
         mPhoneticNameView = (TextView) findViewById(R.id.phonetic_name);
 
         mStarredView = (CheckBox)findViewById(R.id.star);
@@ -132,6 +142,7 @@
 
         mPhotoView = (ImageView)findViewById(R.id.photo);
         mPhotoView.setOnClickListener(this);
+        mPhotoView.setOnLongClickListener(this);
 
         mStatusView = (TextView)findViewById(R.id.status);
 
@@ -152,6 +163,35 @@
         mQueryHandler = new QueryHandler(mContentResolver);
     }
 
+    public void setContactHeaderListener(ContactHeaderListener listener) {
+        mListener = listener;
+    }
+
+    /** {@inheritDoc} */
+    public boolean onLongClick(View v) {
+        switch (v.getId()) {
+            case R.id.photo:
+                performPhotoLongClick();
+                return true;
+            case R.id.name:
+                performDisplayNameLongClick();
+                return true;
+        }
+        return false;
+    }
+
+    private void performPhotoLongClick() {
+        if (mListener != null) {
+            mListener.onPhotoLongClick(mPhotoView);
+        }
+    }
+
+    private void performDisplayNameLongClick() {
+        if (mListener != null) {
+            mListener.onDisplayNameLongClick(mDisplayNameView);
+        }
+    }
+
     private class QueryHandler extends AsyncQueryHandler {
 
         public QueryHandler(ContentResolver cr) {
diff --git a/telephony/java/android/telephony/PhoneNumberUtils.java b/telephony/java/android/telephony/PhoneNumberUtils.java
index 4ed0a5c6..a877c73 100644
--- a/telephony/java/android/telephony/PhoneNumberUtils.java
+++ b/telephony/java/android/telephony/PhoneNumberUtils.java
@@ -22,6 +22,7 @@
 import android.net.Uri;
 import android.os.SystemProperties;
 import android.provider.Contacts;
+import android.provider.ContactsContract;
 import android.text.Editable;
 import android.text.SpannableStringBuilder;
 import android.text.TextUtils;
@@ -129,15 +130,23 @@
         }
 
         String type = intent.resolveType(context);
+        String phoneColumn = null;
 
-        Cursor c = context.getContentResolver().query(
-                uri, new String[]{ Contacts.People.Phones.NUMBER },
-                null, null, null);
+        // Correctly read out the phone entry based on requested provider
+        final String authority = uri.getAuthority();
+        if (Contacts.AUTHORITY.equals(authority)) {
+            phoneColumn = Contacts.People.Phones.NUMBER;
+        } else if (ContactsContract.AUTHORITY.equals(authority)) {
+            phoneColumn = ContactsContract.CommonDataKinds.Phone.NUMBER;
+        }
+
+        final Cursor c = context.getContentResolver().query(uri, new String[] {
+            phoneColumn
+        }, null, null, null);
         if (c != null) {
             try {
                 if (c.moveToFirst()) {
-                    number = c.getString(
-                            c.getColumnIndex(Contacts.People.Phones.NUMBER));
+                    number = c.getString(c.getColumnIndex(phoneColumn));
                 }
             } finally {
                 c.close();