Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cce501cb authored by Yorke Lee's avatar Yorke Lee
Browse files

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
parent 7d661343
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -489,6 +489,8 @@ public class CallDetailActivity extends Activity implements ProximitySensorAware
                    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 @@ public class CallDetailActivity extends Activity implements ProximitySensorAware
                    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 @@ public class CallDetailActivity extends Activity implements ProximitySensorAware
                    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) {