2011-07-31 13 views
0

電話番号の電話番号をすべて選択しようとしています。ただし、同じ電話番号の電話を同じ連絡先に2回お持ちの場合は、Phone._IDが異なるため、2回表示されます。クエリ内の重複する数値の選択を削除する方法はありますか?連絡先:重複した電話番号の選択を削除します

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 .... 
関連する問題