【问题标题】:Is it Possible to filter out facebook,whatsapp contact from contact book?是否可以从通讯录中过滤掉 facebook、whatsapp 联系人?
【发布时间】: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;
    }

【问题讨论】:

    标签: java android facebook-graph-api android-intent android-contacts


    【解决方案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 数据
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多