Как я могу запросить контактную информацию по номеру телефона - PullRequest
1 голос
/ 14 июля 2010

Я пытаюсь запросить контактную информацию на основе номера телефона на Android 1.6. Это код, который я пробовал. Но я получаю счетчик равный 0 в моем курсоре.

    String selection = "PHONE_NUMBERS_EQUAL(" + People.Phones.NUMBER + " , "   + phoneNumber + ")";
    Cursor cursor = mContext.getContentResolver().query(People.CONTENT_URI,
            new String[] {People._ID, People.NAME, People.Phones.NUMBER},
            selection, null, null);

У вас есть идеи, почему он не работает?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 14 июля 2010

Вы можете указать URI и использовать запрос для непосредственного получения информации о контакте по номеру телефона.

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

Cursor cursor = mContext.getContentResolver().query(contactUri, null, null, null, null);

Курсор, возвращаемый кодом выше, должен содержать искомый контакт иВы можете получить необходимую информацию ...

if(cursor.moveToFirst()){
    int personIDIndex = cursor.getColumnIndex(Contacts.Phones.PERSON_ID);
    //etc
}
1 голос
/ 14 июля 2010

Телефонные номера хранятся в отдельной таблице и должны запрашиваться отдельно. Для запроса таблицы телефонных номеров используйте URI, хранящийся в переменной SDK Contacts.Phones.CONTENT_URI. Используйте условие WHERE, чтобы получить номера телефонов для указанного контакта.

if (Integer.parseInt(cur.getString(
        cur.getColumnIndex(People.PRIMARY_PHONE_ID))) > 0) {
    Cursor pCur = cr.query(
            Contacts.Phones.CONTENT_URI, 
            null, 
            Contacts.Phones.PERSON_ID +" = ?", 
            new String[]{id}, null);
    int i=0;
    int pCount = pCur.getCount();
    String[] phoneNum = new String[pCount];
    String[] phoneType = new String[pCount];
    while (pCur.moveToNext()) {
        phoneNum[i] = pCur.getString(
                           pCur.getColumnIndex(Contacts.Phones.NUMBER));
        phoneType[i] = pCur.getString(
                           pCur.getColumnIndex(Contacts.Phones.TYPE));
        i++;
    } 
}

Запросите таблицу телефонов и получите курсор, сохраненный в pCur. Поскольку база данных контактов Android может хранить несколько телефонных номеров для каждого контакта, нам необходимо просмотреть возвращаемые результаты. Помимо возврата номера телефона, в запросе также указывается тип номера (домашний, рабочий, мобильный и т. Д.).

Также прочтите этот учебник о Работа с API контактов Android для 1.6 и ранее

...