2011-07-31 51 views
0

我正嘗試使用電話號碼選擇手機上的所有聯繫人。但是,如果有人使用相同的電話號碼撥打同一個聯繫人兩次,則它會顯示兩次,因爲它具有不同的Phone._ID。有沒有辦法消除查詢中重複數字的選擇:聯繫人:取消選擇重複的電話號碼

Uri uri = Data.CONTENT_URI;

String[] projection = new String[] { 
      Data._ID, 
      Phone._ID, 
      Phone.LOOKUP_KEY, 
      Data.CONTACT_ID, 
      Data.RAW_CONTACT_ID, 
      Phone.NUMBER, 
      Data.DISPLAY_NAME, 
      Phone.LABEL, 
      Phone.TYPE, 
      Phone.PHOTO_ID 
    }; 
    String selection = Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE+"'"; 
    String[] selectionArgs = null; 
    String sortOrder = Data.DISPLAY_NAME + " COLLATE LOCALIZED ASC"; 

return managedQuery(uri, projection, selection, selectionArgs, sortOrder); 

,或者,在後選擇過程? 我不太挑剔...

回答

2

在純SQL中,您可以在有序選擇中指定UNIQUE。我不知道內容提供商是否可以。如果不是,請使用升序電話號碼和姓名進行訂購。將moveToNext名稱與最後一個「新」名稱進行比較。如果您正在使用while循環,請在匹配時繼續。

String goodName = ""; 
    String goodNumber = ""; 

    while (cursor.moveToNext()) { 
     ... get name and number from cursor .... 

     if (goodNumber == contactNumber) { 
      if (contactName == goodName) { 
       continue; 
      } 
     } 

     goodNumber = contactNumber; 
     goodName = contactName; 
     ... do more work .... 
相關問題