从号码中查找Android联系人的姓名

时间:2010-07-20 19:13:27

标签: android cursor contacts

在我的应用中,我从联系人数据库中获取呼叫者的姓名并将其读出。用户与我联系,提供了123-456-7890格式的号码,该号码不起作用。我自己测试了这个,但不明白为什么它不起作用。

我正在使用的完整代码here,但相关部分如下:

Cursor c = getContentResolver().query(Contacts.Phones.CONTENT_URI, 
                            new String[] {Contacts.Phones.DISPLAY_NAME}, 
                            selection, 
                            args, null);

2 个答案:

答案 0 :(得分:1)

查看PhoneLookup

答案 1 :(得分:1)

此代码段来自我的应用,它使用了Memoization ...

static HashMap<String,String> phone2Name = new HashMap<String, String>();

    public static String getDisplayNameFromPhoneNo(Context ctx,String phoneNo) {
        if(phone2Name.containsKey(phoneNo))
        {
            return phone2Name.get(phoneNo);
        }
        if(phoneNo.trim().length() == 0) return null;

        String[] projection = new String[] {
                Contacts.Phones.DISPLAY_NAME,
                Contacts.Phones.NUMBER };


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

        Cursor c = ctx.getContentResolver().query(contactUri, projection, null,
                null, null);

        if (c.moveToFirst()) {
            String name = c.getString(c
                    .getColumnIndex(Contacts.Phones.DISPLAY_NAME));
            phone2Name.put(phoneNo, name);
            return name;
        }

        return null;
    }