【问题标题】:retrieve contact's nickname, part 2检索联系人的昵称,第 2 部分
【发布时间】:2010-08-14 16:08:45
【问题描述】:

几周前我问了完全相同的问题here。起初,我认为答案解决了我的问题,但事实并非如此。我只是没有注意到我无法用这些答案解决我的问题。

但是,我现在得到的是:

final Cursor phoneCursor = context.getContentResolver().query(Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode("'" + incomingNumber + "'")), null, null, null, null);
phoneCursor.moveToFirst();

String lookupString = phoneCursor.getString(phoneCursor.getColumnIndex(PhoneLookup.LOOKUP_KEY));

final Cursor dataCursor = context.getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, ContactsContract.Data.LOOKUP_KEY + "=" + "'" + lookupString + "'", null, null);
dataCursor.moveToFirst();

Log.e("smn", "display_name: " + dataCursor.getString(dataCursor.getColumnIndex(ContactsContract.Data.DISPLAY_NAME)));
Log.e("smn", "nickname: " + dataCursor.getString(dataCursor.getColumnIndex(ContactsContract.Data.DATA1)));

输出如下所示:

08-14 17:41:02.106: ERROR/smn(20146): display_name: Tom Tasche
08-14 17:41:02.106: ERROR/smn(20146): nickname: null

This answer 告诉我昵称保存在数据表中,但是虽然我正在查询数据表,但我没有检索保存在我的通讯录中的联系人别名。

我已经尝试过另一种方法:我为此联系人插入了一个新别名。这很好用。因此,昵称似乎有效。 此外,我再次打印出保存在数据表中的每个字段,但没有成功。

有什么想法吗?也许我做错了什么,但目前我不明白问题出在哪里......

感谢您的帮助

汤姆

【问题讨论】:

  • 您的手机是否使用 Sense UI 运行?

标签: android contacts


【解决方案1】:

我找到了一个“解决方法”:

Uri uri = Uri.withAppendedPath(Contacts.CONTENT_VCARD_URI, lookup);
InputStream stream = settings.context.getContentResolver().openInputStream(uri);

int length = stream.available();
if (length <= 0) {
    return;
}

byte[] vcard = new byte[length];
int bytesRead = stream.read(vcard, 0, length);
if (bytesRead < length) {
    return;
}

String vcardString = new String(vcard, 0, bytesRead, "UTF-8");

String SPLIT = "X-ANDROID-CUSTOM:vnd.android.cursor.item/nickname;";
if (vcardString.contains(SPLIT)) {
    vcardString = vcardString.substring(vcardString.indexOf(SPLIT) + SPLIT.length());
    vcardString = vcardString.substring(0, vcardString.indexOf(';'));

    name = vcardString;
}

这真的很愚蠢,但它确实有效,而且没那么慢(约 300 毫秒)。

祝你好运

汤姆

【讨论】:

    猜你喜欢
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多