Android:从电话号码中检索联系人姓名

标签 android android-contacts phone-number contactscontract

我想检索与传入电话号码关联的联系人姓名。当我在 broascastreceiver 中处理传入的号码时,有一个带有传入调用者姓名的字符串将对我的项目有很大帮助。

我认为这涉及使用 sql WHERE 子句作为过滤器的查询,但我需要对联系人进行排序吗?一个例子或提示会很有帮助。

最佳答案

虽然这已经回答了,但这里是从号码中获取联系人姓名的完整功能。希望对其他人有所帮助:

public static String getContactName(Context context, String phoneNumber) {
    ContentResolver cr = context.getContentResolver();
    Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));
    Cursor cursor = cr.query(uri, new String[]{PhoneLookup.DISPLAY_NAME}, null, null, null);
    if (cursor == null) {
        return null;
    }
    String contactName = null;
    if(cursor.moveToFirst()) {
        contactName = cursor.getString(cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME));
    }

    if(cursor != null && !cursor.isClosed()) {
        cursor.close();
    }

    return contactName;
}

[更新基于 Marcus 的评论]

您必须申请此权限:

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

关于Android:从电话号码中检索联系人姓名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3079365/

相关文章:

ios - 如何在 iPhone 中以编程方式获取 IMSI 号码

android - Activity fragment 通信 : cluttering

Android 4.0.4 MediaPlayer 使用 RTSP url 准备问题

java - 如何使用 Apache HTTP 客户端获取像 "http://ньюбаланс.рф"这样的西里尔域名?

android - 没有标签 View 指向带有 android :labelFor ="@+id/@+id/" attribute 的此文本字段

java - 在 Android 中通过 PHOTO_FILE_ID 将联系人的图像更改为大照片

android - 如何使用 SHOW_OR_CREATE_CONTACT 并为联系人设置照片?

android - 获取 Android 手机联系人的跨设备唯一 ID

php - 在 PHP 中格式化电话号码

Android:如何通过电话号码获取联系人ID?