Add EXTRA_PEOPLE to the dialer notifications.

Bug: 14489962
Change-Id: I8e83cf04fc4acaefcb83fa2ea7c37d091c99f5c1
diff --git a/InCallUI/src/com/android/incallui/CallerInfo.java b/InCallUI/src/com/android/incallui/CallerInfo.java
index 2e89e48..c004dc2 100644
--- a/InCallUI/src/com/android/incallui/CallerInfo.java
+++ b/InCallUI/src/com/android/incallui/CallerInfo.java
@@ -90,6 +90,7 @@
 
     public int photoResource;
     public long person_id;
+    public String lookupKey;
     public boolean needUpdate;
     public Uri contactRefUri;
 
@@ -204,6 +205,14 @@
                 if (columnIndex != -1) {
                     info.person_id = cursor.getLong(columnIndex);
                     Log.v(TAG, "==> got info.person_id: " + info.person_id);
+
+                    // cache the lookup key for later use with person_id to create lookup URIs
+                    columnIndex = cursor.getColumnIndex(PhoneLookup.LOOKUP_KEY);
+                    if ((columnIndex != -1) && (cursor.getString(columnIndex) != null)) {
+                        info.lookupKey = cursor.getString(columnIndex);
+                    } else {
+                        info.lookupKey = null;
+                    }
                 } else {
                     // No valid columnIndex, so we can't look up person_id.
                     Log.v(TAG, "Couldn't find person_id column for " + contactRef);
diff --git a/InCallUI/src/com/android/incallui/ContactInfoCache.java b/InCallUI/src/com/android/incallui/ContactInfoCache.java
index 54de705..0359529 100644
--- a/InCallUI/src/com/android/incallui/ContactInfoCache.java
+++ b/InCallUI/src/com/android/incallui/ContactInfoCache.java
@@ -333,6 +333,13 @@
             } else {
                 cce.personUri = personUri;
             }
+
+            if (info.lookupKey == null) {
+                Log.v(TAG, "lookup key is null. Don't create a lookup uri.");
+                cce.lookupUri = null;
+            } else {
+                cce.lookupUri = Contacts.getLookupUri(info.person_id, info.lookupKey);
+            }
         }
 
         cce.photo = photo;
@@ -507,6 +514,7 @@
         public Drawable photo;
         public boolean isSipCall;
         public Uri personUri; // Used for local photo load
+        public Uri lookupUri; // Sent to NotificationMananger
 
         @Override
         public String toString() {
diff --git a/InCallUI/src/com/android/incallui/StatusBarNotifier.java b/InCallUI/src/com/android/incallui/StatusBarNotifier.java
index 807e44b..2ce1ac6 100644
--- a/InCallUI/src/com/android/incallui/StatusBarNotifier.java
+++ b/InCallUI/src/com/android/incallui/StatusBarNotifier.java
@@ -16,6 +16,7 @@
 
 package com.android.incallui;
 
+import android.net.Uri;
 import com.google.common.base.Preconditions;
 
 import android.app.Notification;
@@ -309,6 +310,8 @@
             addAnswerAction(builder);
         }
 
+        addPersonReference(builder, contactInfo, call);
+
         /*
          * Fire off the notification
          */
@@ -371,6 +374,15 @@
         return contactInfo.name;
     }
 
+    private void addPersonReference(Notification.Builder builder, ContactCacheEntry contactInfo,
+            Call call) {
+        if (contactInfo.lookupUri != null) {
+            builder.addPerson(contactInfo.lookupUri.toString());
+        } else if (!TextUtils.isEmpty(call.getNumber())) {
+            builder.addPerson(Uri.fromParts("tel", call.getNumber(), null).toString());
+        }
+    }
+
     /**
      * Gets a large icon from the contact info object to display in the notification.
      */