Emoji are a staple in conversations for many, many people. They offer a colorful, language-agnostic way to convey thoughts and intent that can’t always come across in a wall of text. Instant messaging is the most common home to these little pictograms, but it's not unheard of for them to appear elsewhere, particularly within contact names. Unfortunately, when Emoji are used to decorate contacts in Gmail, it can interfere with the syncing service and prevent those contacts from crossing between devices.

Symptoms

You’re not going to see any overt warning messages or obvious signs that something has gone wrong, but there are a couple of things to look for. The least obvious - until you realize it’s happening- is that certain contacts will simply never update across devices. Most people are accustomed to making changes and promptly moving on, so this probably won’t jump out at anybody until they are trying to do something with an un-synced contact on a device other than the one where an emoji had been added.

A more obvious indicator can be seen in the Google account on your device. You’re not likely to look here unless you’re already diagnosing a problem, but you can find the screen by going to Settings -> Google (under the Accounts subheading) -> (account). If you’re affected by this bug, the Contacts list item will show a sync icon with an exclamation point (pictured below). Unfortunately, this just shows that there is a problem, not what’s wrong or how to fix it; and that means you could see errors reported for any number of reasons, but no way to be sure it’s because of emoji or something else.

Finally, for the more experienced users, it’s possible to identify the error and the offending contacts by using logcat. Here’s how:

  1. Attach the device to a computer with the latest version of ADB.
  2. From a terminal, run this command: adb logcat -v long > logcat.txt
  3. Initiate a sync by toggling the Contacts checkbox off and back on again.
  4. Once the error icon reappears, end the logcat by pressing ctrl+c.
  5. Open logcat.txt in any text editor.
  6. Search for: "java.lang.IllegalArgumentException: Illegal character"

The error will look something like this:

If you look closely, you can see the contact name ("Fake Contact") followed immediately by some non-standard characters which represent the emoji responsible for the error. This example places the emoji at the end of the name, but they could be located in any field and cause the same problem.

What is affected

This bug appears to be present in Android’s built-in sync adapter, but it has only recently become obvious now that KitKat officially added support for emoji.

As for how much of an effect this has – it seems to only interfere with contacts containing emoji, but allows everything else to sync. I’ve performed multiple test with different patterns of single and multiple contacts with emoji, but I’ve yet to see an instance where a non-emoji contact failed to sync. A logcat also shows an error for each affected contact, which strongly indicates that a single error does not prevent the rest of the sync to occur normally.

Workarounds and fixes

Since the bug was reported at least as early as November of last year, and it hasn’t been fixed in 9 months, it’s probably not a high priority. It’s not clear if the problem is actually located in the OS or if it’s part of the Gmail app or Play services. We’ll have to wait to see if anything can be done for older versions of Android. Still, there are a couple of options to keep your contact list up-to-date without waiting on an official fix.

The first solution is fairly obvious: remove emoji characters from your contacts. It may not be ideal, but it’s the easiest way to be certain that everything is syncing with the Gmail servers. If you need a little help finding the affected entries, use the logcat command mentioned above and search for "vnd.android.cursor.item/name _id". You’ll find the names of each failed contact shortly after that string of text.

If you don’t want to give up on having emoji in your contact database, there is a moderately painless alternative, but it depends on a 3rd-party app. Gmail supports an open protocol called CardDav (also developed by Google) for contact syncing. It’s completely open and there are apps in the Play Store that enable this method. I’ve only briefly tested a couple of them, but they appear to handle emoji without a problem. It’s worth noting, this is the method iOS already uses to keep contacts in sync with Gmail after Google removed Exchange support last year. Unfortunately, there are some compatibility issues reported with some OEM versions of the Contact (sometimes called People) app, so this might not be an option on all devices.

Wrap-Up

There probably aren’t a lot of people using emoji to brighten up their contact list, yet, but it’s certainly becoming more common as emoji support is being added to nearly every keyboard we have available. It’s already popular on many instant messaging networks and in certain cultures. If all goes well, Google might be able to fix this bug with a simple app update. If not, quite a few people may be taken by surprise when they switch to a new phone only to find some contacts are outdated or missing entirely.

Thanks, Yuku.

Sources: AOSP Issue Tracker #64108, #61833