Fix bug where resuming CallDetailActivity loses the add contact intent

getLoaderManager.initLoader() performs the onLoadFinish callback
immediately if CallDetailActivity is being resumed from a previously
paused state. This causes bindContactPhotoAction to be called
with a null intent later on causing the add contact button to be no
longer clickable.

To fix this, if we know that we will receive a loader call back
that correctly binds the intent later on (or immediately), we should
skip the initial bind.

Bug: 11588776
Change-Id: I9407a88ec8bbde303109eb14496e01cf6c347c8f
diff --git a/src/com/android/dialer/CallDetailActivity.java b/src/com/android/dialer/CallDetailActivity.java
index 2b16a98..a24940d 100644
--- a/src/com/android/dialer/CallDetailActivity.java
+++ b/src/com/android/dialer/CallDetailActivity.java
@@ -489,6 +489,8 @@
                     nameOrNumber = firstDetails.number;
                 }
 
+                boolean skipBind = false;
+
                 if (contactUri != null && !UriUtils.isEncodedContactUri(contactUri)) {
                     mainActionIntent = new Intent(Intent.ACTION_VIEW, contactUri);
                     // This will launch People's detail contact screen, so we probably want to
@@ -505,6 +507,7 @@
                     mainActionIntent = null;
                     mainActionIcon = R.drawable.ic_add_contact_holo_dark;
                     mainActionDescription = getString(R.string.description_add_contact);
+                    skipBind = true;
                 } else if (isVoicemailNumber) {
                     mainActionIntent = null;
                     mainActionIcon = 0;
@@ -536,7 +539,10 @@
                     mainActionDescription = null;
                 }
 
-                bindContactPhotoAction(mainActionIntent, mainActionIcon, mainActionDescription);
+                if (!skipBind) {
+                    bindContactPhotoAction(mainActionIntent, mainActionIcon,
+                            mainActionDescription);
+                }
 
                 // This action allows to call the number that places the call.
                 if (canPlaceCallsTo) {