从联系人列表中获取Skype名称

问题描述 投票:0回答:2

我正在使用以下代码在Android设备中获取Skype联系人:

private void getContactList() {
    Cursor c = getContentResolver().query(
            RawContacts.CONTENT_URI,
            new String[] { RawContacts.CONTACT_ID,
                    RawContacts.DISPLAY_NAME_PRIMARY,
                    RawContacts.DISPLAY_NAME_ALTERNATIVE },
            RawContacts.ACCOUNT_TYPE + "= ?",
            new String[] { "com.skype.contacts.sync" }, null);

    int contactNameColumn = c
            .getColumnIndex(RawContacts.DISPLAY_NAME_ALTERNATIVE);
    int count = c.getCount();
    skypeName = new String[count];
    for (int i = 0; i < count; i++) {
        c.moveToPosition(i);
        skypeName[i] = c.getString(contactNameColumn);

        Log.i("KEY", skypeName[i]);
    }
}

此代码工作正常,但它返回了Skype显示名称。但是,有可能获得Skype名称而不是显示名称,因此我可以使用该Skype名称进行通话或视频通话吗?谢谢,问候。

android skype
2个回答
1
投票

您需要查询Data表而不是RawContactsData表的数据是按mimetype来组织的,您只需要找到包含所需信息的mimetype,即可在skype的情况是:"vnd.android.cursor.item/com.skype.android.skypecall.action"

private void getContactList() {
    Cursor c = getContentResolver().query(
            Data.CONTENT_URI,
            new String[] { Data.CONTACT_ID, Data.DATA1 },
            Data.MIMETYPE + "= ?", 
            new String[] { "vnd.android.cursor.item/com.skype.android.skypecall.action" },
            null);

    while (c != null && c.moveToNext()) {
        String contact = c.getLong(0);
        String skype = c.getString(1);

        Log.i("contact " + contact + " has skype username: " + skype);
    }
}
  • 我在这里输入了代码,因此未选中,可能会有错别字
  • 确保您始终通过c.close()关闭游标

1
投票

我对Android-Skype API并不是很熟悉,但是看起来像这样:]

.getColumnIndex(RawContacts.DISPLAY_NAME_ALTERNATIVE);

是拉动显示名称而不是用户名的原因。您可以检查API,看看是否还有另一个RawContacts。method

代替了用户名。

可在此处获得更多信息:

http://www.programmableweb.com/api/skype

http://www.skype.com/en/developer/

© www.soinside.com 2019 - 2024. All rights reserved.