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) {