无法从号码解析联系人姓名

时间:2010-11-14 08:25:52

标签: android

我正在使用Android Wildfire,我使用以下代码查找现有电话号码的联系人姓名。

private String getContactNameFromNumber(String number) {
    String[] projection = new String[] { Contacts.Phones.DISPLAY_NAME, 
            Contacts.Phones.NUMBER };

    Uri contactUri = Uri.withAppendedPath(Contacts.Phones.CONTENT_FILTER_URL, Uri.encode(number));

    Log.d(TAG, contactUri.toString());

    // query time
    Cursor c = context.getContentResolver().query(contactUri, projection, null,
            null, null);

    // if the query returns 1 or more results
    // return the first result
    if (c.moveToFirst()) {
        String name = c.getString(c.getColumnIndex(Contacts.Phones.DISPLAY_NAME));
        Log.d(TAG, name);
        return name;
    }

    // return null if no match was found
    return null;
}

我无法解析联系人姓名。我是这个话题的新手,我们将不胜感激。提前谢谢了。 logcat输出显示以下内容

11-14 13:45:35.879: DEBUG/Test(3342): content://contacts/phones/filter/%2B919773653345

2 个答案:

答案 0 :(得分:1)

我认为您的问题是您没有正确拨打联系人。 尝试更改

Uri contactUri = Uri.withAppendedPath(Contacts.Phones.CONTENT_FILTER_URL, Uri.encode(number));

Uri lookupUri = Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, lookupKey)
Cursor c = getContentResolver().query(lookupUri, projection, null, null, null);
try {
    c.moveToFirst();
    String displayName = c.getString(0);
} finally {
    c.close();
}

答案 1 :(得分:1)

不推荐您获取联系人的方法。除非您使用旧手机进行编程,否则应使用ContactsContract.PhoneLookup

正如LucaB所说,光标可能应该关闭。