Поиск имени контакта Android по номеру - PullRequest
0 голосов
/ 20 июля 2010

В моем приложении я получаю имя человека, звонящего из базы данных контактов, и зачитываю его. Пользователь связался со мной по поводу номера в формате 123-456-7890, который не работает. Я сам проверил это и не понимаю, почему это не сработает.

Полный код, который я использую, доступен здесь , но соответствующая часть ниже:

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

Ответы [ 2 ]

1 голос
/ 21 июля 2010

Этот фрагмент из моего приложения, он использует 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;
    }
1 голос
/ 20 июля 2010

Оформить заказ PhoneLookup .

...