2014-03-19 104 views
1

我正在提交聯繫人申請,但是當我收到所有聯繫號碼時,我會得到重複的號碼。我怎樣才能確保我只有唯一的號碼?如何從android的聯繫人應用程序中獲取唯一的聯繫人號碼?

ContentResolver cr = getContentResolver(); 
     Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 
     if (cur != null && cur.getCount() > 0) { 
      while (cur.moveToNext()) { 
       strPhontNumberTemp = ""; 
       mPhoneContactsVo = new PhoneContactsVo(); 

       String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
       String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 

       if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { 

        Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, ContactsContract.CommonDataKinds.Phone.CONTACT_ID 
          + " = ?", new String[] { id }, null); 

        while (pCur.moveToNext()) { 
         String phoneNumber = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
         Log.i(TAG, "phoneNumber="+phoneNumber); // Dupblicate number print 
        } 
       } 
      } 
     } 

回答

3

使用Set接口添加電話號碼,以避免重複。

Set<String> uniques = new HashSet<String>(); 

檢查這個簡單的例子

public static void main(String[] args) { 
    Set<String> uniques = new HashSet<String>(); 
    Set<String> dups = new HashSet<String>(); 

    for (String a : args) 
     if (!uniques.add(a)) 
      dups.add(a); 

    // Destructive set-difference 
    uniques.removeAll(dups); 

    System.out.println("Unique words: " + uniques); 
    System.out.println("Duplicate words: " + dups); 
    } 

從這個鏈接... http://docs.oracle.com/javase/tutorial/collections/interfaces/set.html

相關問題