Android 联系人查询获取重复项

Posted

技术标签:

【中文标题】Android 联系人查询获取重复项【英文标题】:Android Contacts Query Gets Duplicates 【发布时间】:2011-07-16 08:41:30 【问题描述】:

我正在尝试获取某个联系人的所有电话号码。当我用光标查询与联系人关联的号码时,我得到每个号码的重复项。在窥探之后,我相信这是因为链接的个人资料(即 Google 个人资料和电话联系人个人资料)。这是我提取数字的代码:

Cursor cursor = getContentResolver().query(
     Phone.CONTENT_URI, 
     new String[]PhoneLookup.NUMBER,
     Phone.CONTACT_ID + "=?",
     new String[]id, null);
while(cursor.moveToNext()) 
     String phoneNumber = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
     Toast.makeText(getApplicationContext(), phoneNumber, Toast.LENGTH_LONG).show();

cursor.close();

有没有办法将此查询限制为特定配置文件? 提前致谢。我已经搜索了一段时间,但找不到任何解决方案。

【问题讨论】:

【参考方案1】:

我最近遇到了类似的问题(例如,缺少 group by 子句),我设法通过将 ContentProvider 中的数据插入临时表并查询表以获取结果来解决问题。

故事是 ContentProvider 背后的数据可能不是数据库。它可以是 XML、JSON、FileSystem 等……所以这些没有 Group By 选项,因此他们把它排除在外。你也不能假设 count(_id) 总是有效的。

【讨论】:

以上是关于Android 联系人查询获取重复项的主要内容,如果未能解决你的问题,请参考以下文章

Android快速获取联系人

获取联系人在一分钟内有 20 个活动的行 - SQL 查询 [重复]

如何从 Android 中的联系人列表中获取联系人?使用联系提供商

如何从android中的单个查询中获取联系人的名字,姓氏,电子邮件ID

循环没有捕获重复项并在 Android(Java) 中删除它们

无法从 Android 获取所有联系人