Android Enthusiasts Stack Exchange is a question and answer site for enthusiasts and power users of the Android operating system. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm synchronizing my contacts from many accounts (Hotmail, Facebook, Gmail), everything have worked well and the OS has joined (or shows them as one) the accounts that refer to the same person. But not all accounts, since some accounts have not been joined although both accounts have the same name and one email exists in both as well.

I wonder what is the criteria that Android depends on to join the accounts?

Note: I do know that I can join them by myself in the contants list, but I would let it know them by itself.

share|improve this question
up vote 2 down vote accepted

Raw contacts are joined according to rules described at Using the Contacts API:

Two raw contacts are considered to be a match if at least one of these conditions is met:

  • They have matching names.
  • Their names consist of the same words but in different order (for example, "Bob Parr" and "Parr, Bob")
  • One of them has a common short name for the other (for example, "Bob Parr" and "Robert Parr") One of them has just a first or last name and it matches the other raw contact. This rule is less reliable, so it only applies if the two raw contacts are also sharing some other data like a phone number, an email address or a nickname (for example, Helen ["elastigirl"] = Helen Parr ["elastigirl"])
  • At least one of the two raw contacts is missing the name altogether and they are sharing a phone number, an email address or a nickname (for example, Bob Parr> [] =

When comparing names, the system ignores upper/lower case differences (Bob=BOB=bob) and diacritical marks (Hélène=Helene). When comparing two phone numbers the system ignores special characters such as "*", "#", "(", ")", and whitespace. Also if the only difference between two numbers is that one has a country code and the other does not, then the system considers those to be a match (except for numbers in the Japan country code).

Automatic aggregation is not permanent; any change of a constituent raw contact may create a new aggregate or break up an existing one.

There is also explicit aggregation, that can be set for raw contacts, if a user explicitly wants two contacts to be joined. Read more about it in the article.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.