如何从电话簿获取与android中特定联系人链接的所有社交帐户?

Gri*_*ani 6 twitter android facebook linkedin android-contacts

我从电话簿中获取了所有设备联系人.现在我想从电话簿中获取的特定联系人获取链接帐户(facebook,twitter,instagram,LinkedIn).我该怎么办?

这是获取联系人的代码.

public Cursor getContactsCursor(FragmentActivity activity) {
        Cursor cursor = null;
        try {
            String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + "= 0" + " OR " + ContactsContract.Contacts.IN_VISIBLE_GROUP + "= 1";
            String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
            ContentResolver cr = activity.getContentResolver();
            return cr.query(ContactsContract.Contacts.CONTENT_URI, null, selection, null, sortOrder);
        } catch (Exception e) {
            AppLogger.e(Helper.class.getSimpleName(), e.getMessage());
            return cursor;
        }
    }
Run Code Online (Sandbox Code Playgroud)

现在我不知道如何获取与特定联系人链接的帐户(如facebook,linkedin等).

有人可以指导我.

更新: 在下面附加的图像中,单击红色突出显示的部分,在浏览器中打开链接的用户配置文件.因此,我愿意获取用于打开用户个人资料页面的字段.

在此输入图像描述

提前致谢.

mar*_*mor 4

您需要弄清楚MIMETYPE您感兴趣的所有帐户的具体信息,例如,Google+ 的帐户MIMETYPE是:vnd.android.cursor.item/vnd.googleplus.profile

您可以转储MIMETYPE联系人的所有 s 并手动找出您需要的:

// make sure you import Data from: ContactsContract.Data
String[] projection = new String[] { Data.MIMETYPE };
String selection = Data.CONTACT_ID + " = '"+ contactId + "'";
Cursor cursor = getContentResolver().query(Data.CONTENT_URI, projection, selection, null, null);
DatabaseUtils.dumpCursor(cursor);
cursor.close();
Run Code Online (Sandbox Code Playgroud)

一旦您有了所需的固定列表MIMETYPE,您就可以查询其中特定联系人的信息:

// Add more
String[] mimetypes = new String[] { 
    "vnd.android.cursor.item/vnd.googleplus.profile",
    "vnd.android.cursor.item/vnd.com.whatsapp.profile" 
};

// Usually the interesting info is on the first few fields, modify this if needed
String[] projection = new String[] { Data.DATA1, Data.DATA2, Data.DATA3, Data.DATA4 };
String selection = Data.CONTACT_ID + " = '"+ contactId + "' AND " + Data.MIMETYPE + " IN (?,?)";

Cursor cursor = getContentResolver().query(Data.CONTENT_URI, projection, selection, mimetypes, null);
DatabaseUtils.dumpCursor(cursor);
cursor.close();
Run Code Online (Sandbox Code Playgroud)

更新:

对于 linkedin,mimetype 确实是:vnd.android.cursor.item/vnd.com.linkedin.android.profile。关于您关于没有个人资料网址的评论,在 Data1 中您应该有一些长 ID,例如AC...UQ4(大约 40 个字符)。

那么你的网址是: https://www.linkedin.com/profile/view?id=<data1Id> 就像:https://www.linkedin.com/profile/view?id=AC...UQ4