0

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

通过定义我只想要 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();
}
4

2 回答 2

0

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

于 2012-07-05T09:09:15.877 回答
0
ArrayList<String> list =new ArrayList<String>();

在你的 while 循环中

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

填写列表后,您可以保存它们。

但是,我认为将数字保存到您的数据库也是如此。而不是保存他们,而是保存他们的 ID。

于 2012-07-13T05:10:22.133 回答