Я хотел бы получить название контакта, связанного с входящим телефонным номером. Поскольку я обрабатываю входящее число в broascastreceiver, наличие Строки с именем вызывающего абонента помогло бы моему проекту значительно.
Я думал бы, что это включает запрос с помощью sql оператора Where в качестве фильтра, но я должен отсортировать контакты? Пример или подсказка имели бы большую помощь.
Для этого вам необходимо использовать оптимизированный поставщик 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;
}