我目前正在尝试查询所有联系人并存储到数据库中。但是,我意识到这个问题,如果我的联系人有多个号码,它会返回相同的联系人姓名和其他多个号码。但是,如果我的联系人有电子邮件,则查询将复制相同的名称和相同的号码。我可以知道如何解决这个问题吗?我只想存储名称和号码一次。我想要与电子邮件无关。
我设法通过定义我只想要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();
}
答案 0 :(得分:0)
不要将数字保存到您的数据库。这是在Android上执行此操作的正确方法。 当您需要查找号码查询联系人和搜索的名称时。因为用户可以改变联系方式,因此您的数据库中将包含旧数据。
答案 1 :(得分:0)
ArrayList<String> list =new ArrayList<String>();
在你的while循环中
if(!list.contains(mobile)){
list.add(mobile);
}
填写清单后,您可以保存它们。
但是,我认为你的数据库的保存号码一样。而不是保存他们保存他们的ID。