2015-12-15 58 views
2

我的应用程序需要联系人集成。我正在撰写查询以从本地获取联系人。我得到所有的行,但重复的行。如果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。 –