From e4cfadf5f40012890fa964b15af5bf7f72e43a6b Mon Sep 17 00:00:00 2001 From: Gary Mai Date: Tue, 7 May 2019 17:44:03 -0700 Subject: Send broadcast to request high res photo sync For GoogleAccountTypes don't start the service to notify the adapter that the contact was viewed. Instead send a broadcast to request a high res photo sync. Fallback to original code path if there are no receivers. Test: Manual test with debug logging enabled. Viewing a low res photo synced the high res photo after the broadcast was received and the job intent service was run. Tested on Q build: QP1A.190430.002 Bug:131899328 Change-Id: I85212d6173567a305868a631a610f003b8cbc7a7 --- src/com/android/contacts/model/ContactLoader.java | 27 +++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/com/android/contacts/model/ContactLoader.java b/src/com/android/contacts/model/ContactLoader.java index bf1ac741e..cf5442f80 100644 --- a/src/com/android/contacts/model/ContactLoader.java +++ b/src/com/android/contacts/model/ContactLoader.java @@ -24,6 +24,7 @@ import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; +import android.content.pm.ResolveInfo; import android.content.res.AssetFileDescriptor; import android.content.res.Resources; import android.database.Cursor; @@ -42,6 +43,7 @@ import com.android.contacts.GroupMetaDataLoader; import com.android.contacts.compat.CompatUtils; import com.android.contacts.group.GroupMetaData; import com.android.contacts.model.account.AccountType; +import com.android.contacts.model.account.GoogleAccountType; import com.android.contacts.model.dataitem.DataItem; import com.android.contacts.model.dataitem.PhoneDataItem; import com.android.contacts.model.dataitem.PhotoDataItem; @@ -881,13 +883,34 @@ public class ContactLoader extends AsyncTaskLoader { mNotifiedRawContactIds.add(rawContactId); final AccountType accountType = rawContact.getAccountType(context); final String serviceName = accountType.getViewContactNotifyServiceClassName(); - final String servicePackageName = accountType.getViewContactNotifyServicePackageName(); + final String servicePackageName = accountType + .getViewContactNotifyServicePackageName(); if (!TextUtils.isEmpty(serviceName) && !TextUtils.isEmpty(servicePackageName)) { final Uri uri = ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId); final Intent intent = new Intent(); + intent.setDataAndType(uri, RawContacts.CONTENT_ITEM_TYPE); + if (accountType instanceof GoogleAccountType) { + intent.setPackage(servicePackageName); + intent + .setAction("com.google.android.syncadapters.contacts.SYNC_HIGH_RES_PHOTO"); + List broadcastReceivers = + context.getPackageManager().queryBroadcastReceivers(intent, 0); + if (!broadcastReceivers.isEmpty()) { + if (Log.isLoggable(TAG, Log.DEBUG)) { + for (ResolveInfo broadcastReceiver : broadcastReceivers) { + Log.d(TAG, broadcastReceiver.activityInfo.toString()); + } + } + context.sendBroadcast(intent); + continue; + } + } + // TODO: Social Stream API is deprecated, and once the opted-in + // sync adapters target Android O+, we won't be able to start their services + // since they'll likely be in the background, so we'll need to remove the + // startService call. intent.setClassName(servicePackageName, serviceName); intent.setAction(Intent.ACTION_VIEW); - intent.setDataAndType(uri, RawContacts.CONTENT_ITEM_TYPE); try { context.startService(intent); } catch (Exception e) { -- cgit v1.2.3 From d7e7c92fafd6c38d9fb7355c0a9a8ff269013fb1 Mon Sep 17 00:00:00 2001 From: Gary Mai Date: Thu, 16 May 2019 14:41:12 -0700 Subject: Fix "Set default" in QuickContact QuickContactActivity's context menu shows up "Set default" item even when contact has only one phone number or email. Add back the logic that checked whether there was only one of these. It was accidentally removed in ag/6001361 Test: Verified single phone number and single email entries don't have "Set default" FIXES: 132227659 Change-Id: Ie08af672688eb1691107e9b19d73e09692dc433d --- src/com/android/contacts/quickcontact/QuickContactActivity.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java index fcbfba91b..6d206b6a5 100644 --- a/src/com/android/contacts/quickcontact/QuickContactActivity.java +++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java @@ -992,6 +992,14 @@ public class QuickContactActivity extends ContactsActivity { } private void bindDataToCards(Cp2DataCardModel cp2DataCardModel) { + final Map> dataItemsMap = cp2DataCardModel.dataItemsMap; + + final List phoneDataItems = dataItemsMap.get(Phone.CONTENT_ITEM_TYPE); + mOnlyOnePhoneNumber = phoneDataItems != null && phoneDataItems.size() == 1; + + final List emailDataItems = dataItemsMap.get(Email.CONTENT_ITEM_TYPE); + mOnlyOneEmail = emailDataItems != null && emailDataItems.size() == 1; + populateContactAndAboutCard(cp2DataCardModel, /* shouldAddPhoneticName */ true); } -- cgit v1.2.3