【问题标题】:Contact cursor returning duplicate rows接触游标返回重复行
【发布时间】:2015-12-15 07:20:08
【问题描述】:

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

请帮助根据电话号码获取唯一行。

谢谢

【问题讨论】:

  • 请有任何建议

标签: android android-contacts


【解决方案1】:

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);
}

【讨论】:

  • 我从联系人光标而不是从 sqlite 获取行。
猜你喜欢
  • 2013-06-26
  • 1970-01-01
  • 2019-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-11
  • 2019-02-11
  • 2016-04-11
相关资源
最近更新 更多