是否可以从通讯录中过滤掉 facebook、whatsapp 联系人?
Posted
技术标签:
【中文标题】是否可以从通讯录中过滤掉 facebook、whatsapp 联系人?【英文标题】:Is it Possible to filter out facebook,whatsapp contact from contact book? 【发布时间】:2019-07-22 10:04:44 【问题描述】:我想从android中的电话簿中过滤同步的facebook联系人,是否有任何投影内容://方案,以便检索内容。
这是我当前查询给定的 URI,返回结果集上的光标。
public static Cursor getContactList(ContentResolver cr)
// reading all data in descending order according to DATE
Cursor curContact = cr.query(ContactsContract.Contacts.CONTENT_URI,
null, null, null, null);
return curContact;
【问题讨论】:
【参考方案1】:是的... 给定帐户类型,您可以获得同步的联系人。对于 WhatsApp,它是“com.whatsapp”(*尚未测试 facebook 的帐户类型)。所以 只需像下面的示例那样定义帐户类型
Cursor c = getContentResolver().query(
RawContacts.CONTENT_URI,
new String[] RawContacts.CONTACT_ID, RawContacts.DISPLAY_NAME_PRIMARY ,
RawContacts.ACCOUNT_TYPE + "= ?",
new String[] "com.whatsapp","facebook" ,
null);
ArrayList<String> myWhatsappContacts = new ArrayList<String>();
int contactNameColumn = c.getColumnIndex(RawContacts.DISPLAY_NAME_PRIMARY);
while (c.moveToNext())
// You can also read RawContacts.CONTACT_ID to read the
// ContactsContract.Contacts table or any of the other related ones.
myWhatsappContacts.add(c.getString(contactNameColumn));
【讨论】:
请注意,这将返回原始联系人,而不是像 OP 在他的查询中获得的联系人,这意味着这些结果可能包含许多重复项,因为一些原始联系人代表同一个人并且是加入单个联系人。您可以通过使用带有 contact-id 键和 raw-contact-id 值的 HashMap 来缓解这种情况 @marmor 我们可以得到照片,脸书的用户名 与 whatsapp 不同,facebook 应用程序不会将联系人同步到 ContactsContract DB,因此除非您使用他们的 API(Graph API),否则您无法访问任何 FB 数据以上是关于是否可以从通讯录中过滤掉 facebook、whatsapp 联系人?的主要内容,如果未能解决你的问题,请参考以下文章
Yii2:是不是可以从登录 Yii 调试器中过滤掉一些查询?
User Agent过滤器有时仅在“ strpos”中起作用
ABMultiValueGetCount - kABPersonSocialProfileProperty 总是返回 0 吗?如何从通讯录中获取 Facebook 详细信息?