diff options
author | Eric Erfanian <erfanian@google.com> | 2017-06-19 11:26:01 -0700 |
---|---|---|
committer | Eric Erfanian <erfanian@google.com> | 2017-06-19 11:30:45 -0700 |
commit | 2f1c7586bcce334ca69022eb8dc6d8965ceb6a05 (patch) | |
tree | bf00ada449ee3de31ec983a14e84159200aa18c2 /java/com/android/contacts/common/ContactsUtils.java | |
parent | 3d0ca68e466482971a4cf46576c50cb2bd42bcb5 (diff) |
Update AOSP Dialer source from internal google3 repository at
cl/159428781.
Test: make, treehugger
This CL updates the AOSP Dialer source with all the changes that have
gone into the private google3 repository. This includes all the
changes from cl/152373142 (4/06/2017) to cl/159428781 (6/19/2017).
This goal of these drops is to keep the AOSP source in sync with the
internal google3 repository. Currently these sync are done by hand
with very minor modifications to the internal source code.
See the Android.mk file for list of modifications.
Our current goal is to do frequent drops (daily if possible) and
eventually switched to an automated process.
Change-Id: Ie60a84b3936efd0ea3d95d7c86bf96d2b1663030
Diffstat (limited to 'java/com/android/contacts/common/ContactsUtils.java')
-rw-r--r-- | java/com/android/contacts/common/ContactsUtils.java | 185 |
1 files changed, 2 insertions, 183 deletions
diff --git a/java/com/android/contacts/common/ContactsUtils.java b/java/com/android/contacts/common/ContactsUtils.java index 60af44b9a..66ccc90e7 100644 --- a/java/com/android/contacts/common/ContactsUtils.java +++ b/java/com/android/contacts/common/ContactsUtils.java @@ -16,184 +16,17 @@ package com.android.contacts.common; -import android.content.Context; -import android.content.Intent; -import android.database.Cursor; -import android.net.Uri; -import android.provider.ContactsContract.CommonDataKinds.Im; -import android.provider.ContactsContract.DisplayPhoto; +import android.provider.ContactsContract.Contacts; import android.support.annotation.IntDef; -import android.text.TextUtils; -import android.util.Pair; -import com.android.contacts.common.compat.ContactsCompat; import com.android.contacts.common.compat.DirectoryCompat; -import com.android.contacts.common.model.AccountTypeManager; -import com.android.contacts.common.model.account.AccountWithDataSet; -import com.android.contacts.common.model.dataitem.ImDataItem; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; -import java.util.List; public class ContactsUtils { // Telecomm related schemes are in CallUtil - public static final String SCHEME_IMTO = "imto"; - public static final String SCHEME_MAILTO = "mailto"; - public static final String SCHEME_SMSTO = "smsto"; public static final long USER_TYPE_CURRENT = 0; public static final long USER_TYPE_WORK = 1; - private static final String TAG = "ContactsUtils"; - private static final int DEFAULT_THUMBNAIL_SIZE = 96; - private static int sThumbnailSize = -1; - - /** - * This looks up the provider name defined in ProviderNames from the predefined IM protocol id. - * This is used for interacting with the IM application. - * - * @param protocol the protocol ID - * @return the provider name the IM app uses for the given protocol, or null if no provider is - * defined for the given protocol - * @hide - */ - public static String lookupProviderNameFromId(int protocol) { - switch (protocol) { - case Im.PROTOCOL_GOOGLE_TALK: - return ProviderNames.GTALK; - case Im.PROTOCOL_AIM: - return ProviderNames.AIM; - case Im.PROTOCOL_MSN: - return ProviderNames.MSN; - case Im.PROTOCOL_YAHOO: - return ProviderNames.YAHOO; - case Im.PROTOCOL_ICQ: - return ProviderNames.ICQ; - case Im.PROTOCOL_JABBER: - return ProviderNames.JABBER; - case Im.PROTOCOL_SKYPE: - return ProviderNames.SKYPE; - case Im.PROTOCOL_QQ: - return ProviderNames.QQ; - } - return null; - } - - /** - * Test if the given {@link CharSequence} contains any graphic characters, first checking {@link - * TextUtils#isEmpty(CharSequence)} to handle null. - */ - public static boolean isGraphic(CharSequence str) { - return !TextUtils.isEmpty(str) && TextUtils.isGraphic(str); - } - - /** Returns true if two objects are considered equal. Two null references are equal here. */ - public static boolean areObjectsEqual(Object a, Object b) { - return a == b || (a != null && a.equals(b)); - } - - /** Returns true if two {@link Intent}s are both null, or have the same action. */ - public static final boolean areIntentActionEqual(Intent a, Intent b) { - if (a == b) { - return true; - } - if (a == null || b == null) { - return false; - } - return TextUtils.equals(a.getAction(), b.getAction()); - } - - public static boolean areGroupWritableAccountsAvailable(Context context) { - final List<AccountWithDataSet> accounts = - AccountTypeManager.getInstance(context).getGroupWritableAccounts(); - return !accounts.isEmpty(); - } - - /** - * Returns the size (width and height) of thumbnail pictures as configured in the provider. This - * can safely be called from the UI thread, as the provider can serve this without performing a - * database access - */ - public static int getThumbnailSize(Context context) { - if (sThumbnailSize == -1) { - final Cursor c = - context - .getContentResolver() - .query( - DisplayPhoto.CONTENT_MAX_DIMENSIONS_URI, - new String[] {DisplayPhoto.THUMBNAIL_MAX_DIM}, - null, - null, - null); - if (c != null) { - try { - if (c.moveToFirst()) { - sThumbnailSize = c.getInt(0); - } - } finally { - c.close(); - } - } - } - return sThumbnailSize != -1 ? sThumbnailSize : DEFAULT_THUMBNAIL_SIZE; - } - - private static Intent getCustomImIntent(ImDataItem im, int protocol) { - String host = im.getCustomProtocol(); - final String data = im.getData(); - if (TextUtils.isEmpty(data)) { - return null; - } - if (protocol != Im.PROTOCOL_CUSTOM) { - // Try bringing in a well-known host for specific protocols - host = ContactsUtils.lookupProviderNameFromId(protocol); - } - if (TextUtils.isEmpty(host)) { - return null; - } - final String authority = host.toLowerCase(); - final Uri imUri = - new Uri.Builder().scheme(SCHEME_IMTO).authority(authority).appendPath(data).build(); - final Intent intent = new Intent(Intent.ACTION_SENDTO, imUri); - return intent; - } - - /** - * Returns the proper Intent for an ImDatItem. If available, a secondary intent is stored in the - * second Pair slot - */ - public static Pair<Intent, Intent> buildImIntent(Context context, ImDataItem im) { - Intent intent = null; - Intent secondaryIntent = null; - final boolean isEmail = im.isCreatedFromEmail(); - - if (!isEmail && !im.isProtocolValid()) { - return new Pair<>(null, null); - } - - final String data = im.getData(); - if (TextUtils.isEmpty(data)) { - return new Pair<>(null, null); - } - - final int protocol = isEmail ? Im.PROTOCOL_GOOGLE_TALK : im.getProtocol(); - - if (protocol == Im.PROTOCOL_GOOGLE_TALK) { - final int chatCapability = im.getChatCapability(); - if ((chatCapability & Im.CAPABILITY_HAS_CAMERA) != 0) { - intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("xmpp:" + data + "?message")); - secondaryIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("xmpp:" + data + "?call")); - } else if ((chatCapability & Im.CAPABILITY_HAS_VOICE) != 0) { - // Allow Talking and Texting - intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("xmpp:" + data + "?message")); - secondaryIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("xmpp:" + data + "?call")); - } else { - intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("xmpp:" + data + "?message")); - } - } else { - // Build an IM Intent - intent = getCustomImIntent(im, protocol); - } - return new Pair<>(intent, secondaryIntent); - } /** * Determine UserType from directory id and contact id. @@ -232,27 +65,13 @@ public class ContactsUtils { : USER_TYPE_CURRENT; } // Only check contact id if directory id is null - if (contactId != null && contactId != 0L && ContactsCompat.isEnterpriseContactId(contactId)) { + if (contactId != null && contactId != 0L && Contacts.isEnterpriseContactId(contactId)) { return USER_TYPE_WORK; } else { return USER_TYPE_CURRENT; } } - // TODO find a proper place for the canonical version of these - public interface ProviderNames { - - String YAHOO = "Yahoo"; - String GTALK = "GTalk"; - String MSN = "MSN"; - String ICQ = "ICQ"; - String AIM = "AIM"; - String XMPP = "XMPP"; - String JABBER = "JABBER"; - String SKYPE = "SKYPE"; - String QQ = "QQ"; - } - /** * UserType indicates the user type of the contact. If the contact is from Work User (Work Profile * in Android Multi-User System), it's {@link #USER_TYPE_WORK}, otherwise, {@link |