2015-12-15 4 views
2

Для моего приложения требуются контакты для интеграции. Я пишу запрос, чтобы получить контакты из native. Я получаю все строки, но с повторяющимися строками. Дубликаты идут, если связаны с Whatsapp, skype и другими учетными записями.Контактный курсор, возвращающий повторяющиеся строки

Ниже в запросе

String isPhoneType = "(" + Data.MIMETYPE + "='" + CommonDataKinds.Phone.CONTENT_ITEM_TYPE 
      + "' AND " + CommonDataKinds.Phone.NUMBER + " IS NOT NULL) "; 

    String query = Contacts.DISPLAY_NAME + " IS NOT NULL " 
      + " AND (" + isPhoneType + ")" ; 



    String[] projection; 
    if (Compatibility.isCompatible(11)) { 
     projection = new String[] { 
       Data._ID, 
       Data.CONTACT_ID, 
       Data.DATA1, 
       Data.DISPLAY_NAME, 
       Data.PHOTO_ID, 
       Data.LOOKUP_KEY, 
       Data.PHOTO_URI 
     }; 
    } else { 
     projection = new String[] { 
       Data._ID, 
       Data.CONTACT_ID, 
       Data.DATA1, 
       Data.DISPLAY_NAME, 
       Data.PHOTO_ID, 
       Data.LOOKUP_KEY 
     }; 
    } 

    Cursor resCursor = ctxt.getContentResolver().query(uri, 
      projection, query, 
      null, Data.DISPLAY_NAME + " ASC"); 

Пожалуйста, помогите в получении уникальных строк на основе телефонных номеров.

Благодаря

+0

Пожалуйста, любые предложения –

ответ

0

Добавить unique на телефон колонке номер в SQLite базе данных, и вы не получите тот же контакт дважды.

@Override 
public void onCreate(SQLiteDatabase db) { 
    String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "(" 
      + KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT," 
      + KEY_PH_NO + " TEXT UNIQUE," + KEY_IMAGE + " TEXT" + ")"; 
    db.execSQL(CREATE_CONTACTS_TABLE); 
} 
+0

Я получаю строки из курсора контактов не из sqlite. –