title: Getting duplicates in Arraylist which should have contacts
body: <p>Im trying to save the users contacts in an <code>ArrayList &lt;Contacts&gt;</code> but somehow I got duplicates in it. I found out that I should use </p>
  
  <pre><code>ContractsContact.Contacts.CONTENT_URI
  </code></pre>
  
  <p>and not </p>
  
  <pre><code>ContractsContact.DATA.CONTENT_URI
  </code></pre>
  
  <p>But its not helping me. I still got dublicates in my <code>ArrayList</code>. Here is my code :</p>
  
  <pre><code>Uri CONTENT_URI = ContactsContract.Contacts.CONTENT_URI;
  String _ID = ContactsContract.Contacts._ID;
  String DISPLAY_NAME = ContactsContract.Contacts.DISPLAY_NAME;
  String HAS_PHONE_NUMBER = ContactsContract.Contacts.HAS_PHONE_NUMBER;
  
  Uri PhoneCONTENT_URI = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
  String Phone_CONTACT_ID = ContactsContract.CommonDataKinds.Phone.CONTACT_ID;
  String NUMBER = ContactsContract.CommonDataKinds.Phone.NUMBER;
  ContentResolver contentResolver = context.getContentResolver();
  
  Cursor cursor = contentResolver.query(CONTENT_URI, null,null, null, null);
  // Loop for every contact in the phone
  if (cursor.getCount() &gt; 0) {
  
          while (cursor.moveToNext()) {
  
              String contact_id = cursor.getString(cursor.getColumnIndex( _ID ));
              String name = cursor.getString(cursor.getColumnIndex( DISPLAY_NAME ));
  
              int hasPhoneNumber = Integer.parseInt(cursor.getString(cursor.getColumnIndex( HAS_PHONE_NUMBER )));
  
              if (hasPhoneNumber &gt; 0) {
  
                  // Query and loop for every phone number of the contact
                  Cursor phoneCursor = contentResolver.query(PhoneCONTENT_URI, null, Phone_CONTACT_ID + " = ?", new String[]{contact_id}, null);
  
                  while (phoneCursor.moveToNext()) {
                      phoneNumber = phoneCursor.getString(phoneCursor.getColumnIndex(NUMBER));
  
                      if (phoneNumber.charAt(0) == '0' &amp;&amp; phoneNumber.charAt(1) == '0')
                      {
                          String temp = "+";
                          for(int j=2;j&lt;phoneNumber.length();++j)
                              temp += phoneNumber.charAt(j);
  
                          phoneNumber = temp;
                      }
  
                      if (!phoneNumber.contains("+"))
                      {
                          PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
                          Phonenumber.PhoneNumber normalized_number = null;
  
                          TelephonyManager telephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
                          String current_iso_code = telephonyManager.getSimCountryIso();
                          current_iso_code = current_iso_code.toUpperCase();
  
                          try {
                              normalized_number = phoneUtil.parse(phoneNumber,current_iso_code);
                          }catch(Exception e){
                              e.printStackTrace();
                          }
  
                          String str_normalized_number = phoneUtil.format(normalized_number, PhoneNumberUtil.PhoneNumberFormat.INTERNATIONAL);
  
                          str_normalized_number = str_normalized_number.replaceAll(" ","");
                          str_normalized_number = str_normalized_number.replaceAll("\\(","");
                          str_normalized_number = str_normalized_number.replaceAll("\\)","");
  
                          contacts.add(new Contact (name,str_normalized_number,current_iso_code,contact_id));
                      }
                      else {
                          phoneNumber = phoneNumber.replaceAll(" ","");
                          phoneNumber = phoneNumber.replaceAll("\\(","");
                          phoneNumber = phoneNumber.replaceAll("\\)","");
                          phoneNumber = phoneNumber.replaceAll("-","");
  
                          String iso_code = null;
                          PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
  
                          try {
                              Phonenumber.PhoneNumber numberProto = phoneUtil.parse(phoneNumber, "");
                              iso_code = phoneUtil.getRegionCodeForNumber(numberProto);
                          }catch(Exception e){}
  
  
                          contacts.add(new Contact (name,phoneNumber,iso_code,contact_id));
                      }
  
  
                  }
  
                  phoneCursor.close();
              }
          }
  </code></pre>
  
  <p>Is there a wrong part in my code which I'm not seeing ?</p>