Android: Получите контактное лицо с номера телефона

Я хотел бы получить название контакта, связанного с входящим телефонным номером. Поскольку я обрабатываю входящее число в broascastreceiver, наличие Строки с именем вызывающего абонента помогло бы моему проекту значительно.

Я думал бы, что это включает запрос с помощью sql оператора Where в качестве фильтра, но я должен отсортировать контакты? Пример или подсказка имели бы большую помощь.

48
задан Kara 18 August 2014 в 06:01
поделиться

1 ответ

Для этого вам необходимо использовать оптимизированный поставщик PhoneLookup, как описано.

Добавьте разрешение к AndroidManifest.xml :

<uses-permission android:name="android.permission.READ_CONTACTS"/>

Затем:

public String getContactName(final String phoneNumber, Context context)
{
    Uri uri=Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI,Uri.encode(phoneNumber));

    String[] projection = new String[]{ContactsContract.PhoneLookup.DISPLAY_NAME};

    String contactName="";
    Cursor cursor=context.getContentResolver().query(uri,projection,null,null,null);

    if (cursor != null) {
        if(cursor.moveToFirst()) {
            contactName=cursor.getString(0);
        }
        cursor.close();
    }

    return contactName;
}
77
ответ дан 7 November 2019 в 12:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: