重复的条目时联系人组的Android 4+
我取使用下面的查询所有的联络小组:重复的条目时联系人组的Android 4+
//get list of contact groups from ContactsContract
Cursor groups_cursor = getContentResolver()//
.query(ContactsContract.Groups.CONTENT_SUMMARY_URI,//
new String[] { //
ContactsContract.Groups._ID,//
ContactsContract.Groups.TITLE, //
ContactsContract.Groups.DATA_SET,//
ContactsContract.Groups.GROUP_VISIBLE,//
ContactsContract.Groups.DELETED,//
ContactsContract.Groups.SYSTEM_ID,//
ContactsContract.Groups.SUMMARY_COUNT, //
ContactsContract.Groups.SUMMARY_WITH_PHONES //
},//
null, null, null);//
我的光标总是包含组“家庭”,“朋友”和“同事”的两倍。
为什么我会得到这些重复?
我有一个Google帐户同步。
组在联系人应用中正确列出。
我有过类似的问题。在我的设备,我注意到:
- 每对重复的组,一组总是包含0触点(
ContactsContract.Groups.SUMMARY_COUNT
)和 - 与> 0联系人的所有联系人组有一个非空
ContactsContract.Groups.NOTES
列。
它仍然不是很清楚,我为什么返回空的群体,但我已经通过选择非空的团体,或有非空列票据围绕它得到。
希望这会有所帮助!
我发现所有这些空的重复组都具有ACCOUNT_TYPE =“DeviceOnly”,而合法组具有ACCOUNT_TYPE =“com.google”。所以如果你把它作为一个参数,你应该很好!
这是我的选择语句添加
private static final String CONTACT_GROUP_SELECTION = ContactsContract.Groups.AUTO_ADD + " = 0 "
+ " AND " + ContactsContract.Groups.ACCOUNT_TYPE + " = 'com.google' "
+ " AND " + ContactsContract.Groups.ACCOUNT_NAME + " NOT NULL "
+ " AND " + ContactsContract.Groups.FAVORITES + " = 0 "
+ " AND " + ContactsContract.Groups.DELETED + " = 0 ";
的其他条款,因为internal Android library使用它们,似乎是个好主意。但是,我添加“com.google”条款之前,重复组的问题并未消失。
这是一个老问题,但因为还是有没有正确的答案在这里的地雷:
- 组可以删除
- 组可以是无形的(用于内部使用)
- 组可以有不同的来源(手机通讯录,不同的同步适配器= Google帐户或其他帐户一般)
前两个可以很容易地使用:
ContactsContract.Groups.DELETED + " = 0 AND " +
ContactsContract.Groups.GROUP_VISIBLE + " = 1";
根本不应该过滤起源。我在我的设备上使用了多个Google帐户,并最终拥有多个“已加入Star Android系统”和“我的联系人”组,这些组由Google同步适配器为不同帐户同步。 最好的解决方案可能是合并具有相同名称的组。用户通常不关心联系人/组同步来自哪个帐户。
我面临同样的问题(在LG G4上的Android 5.1上),所有的答案都是错误的。
GROUP_VISIBLE = '1'
不会返回在“联系人”应用程序中可见的所有组。
NOTES
也没有给出任何可靠的信息,因为所有的组都有一些注释。
ACCOUNT_TYPE
- 也是假的,因为我加入我的团队,并出现两次 - 一个与com.google
类型,而另一个与lg.sync
但一些com.google
组是非空的,有些lg.sync
组也没有空。
看起来只有可靠的查询联系人组的方式是选择非空组。如果你的要求是显示空组,除了两者都显示外,你不能做任何事情。
Intertingly,在MotoG 1st gen Android 5.1上一切似乎都正常,没有重复的组。只有GROUP_VISIBLE
工程不好,因为它根本不显示自定义组。
谢谢,我会试试 – Mirko 2013-07-18 10:57:07
没问题。祝你好运! – Keith 2013-07-18 11:07:16