Android查询和商店联系人重复号码

时间:2012-07-05 08:51:29

标签: android android-contacts

我目前正在尝试查询所有联系人并存储到数据库中。但是,我意识到这个问题,如果我的联系人有多个号码,它会返回相同的联系人姓名和其他多个号码。但是,如果我的联系人有电子邮件,则查询将复制相同的名称和相同的号码。我可以知道如何解决这个问题吗?我只想存储名称和号码一次。我想要与电子邮件无关。

我设法通过定义我只想要TYPE_MOBILE来获取手机号码。但是,我意识到如果我的联系人有Google +,则查询会复制相同的名称和相同的号码。谁能引导我沿着这条线路走?谢谢!

以下是我正在使用的代码:

Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
while (phones.moveToNext()) {
    int phoneType = phones.getInt(phones.getColumnIndex(Phone.TYPE));
    if (phoneType == Phone.TYPE_MOBILE)
    {
          mobile = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA));
          mobile = mobile.replaceAll("\\s", "");
          id = phones.getString(phones.getColumnIndex(ContactsContract.Contacts._ID));
          name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
          long idL = DbHelper.createContact(name, "", mobile, "", id);
          if (idL > 0) {
                mRowId = idL;
          }
    }   
    phones.close();
}

2 个答案:

答案 0 :(得分:0)

不要将数字保存到您的数据库。这是在Android上执行此操作的正确方法。 当您需要查找号码查询联系人和搜索的名称时。因为用户可以改变联系方式,因此您的数据库中将包含旧数据。

答案 1 :(得分:0)

ArrayList<String> list =new ArrayList<String>();
在你的while循环中

if(!list.contains(mobile)){
    list.add(mobile);
}

填写清单后,您可以保存它们。

但是,我认为你的数据库的保存号码一样。而不是保存他们保存他们的ID。