Android 通过电话号码查询联系人名字

public String getDisplayNameByPhone(String phoneNum) {
    String[] projection = new String[]{
            ContactsContract.Contacts._ID,
            ContactsContract.Contacts.DISPLAY_NAME_PRIMARY
    };
    String displayName = null;
    ContentResolver resolver = mContext.getContentResolver();
    Cursor cursor = resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection, ContactsContract.CommonDataKinds.Phone.NUMBER + "=?",
            new String[]{phoneNum}, null);
    if (cursor != null) {
        while (cursor.moveToNext()) {
            displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
            if (!TextUtils.isEmpty(displayName)) {
                break;
            }
        }
    }
    KLog.d(" displayName = "+displayName);
// 第二种方法
    Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNu
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要通过姓名查找联系人,可以使用 Android联系人提供者(ContentProvider)来实现。以下是一些基本步骤: 1. 获取联系人提供者的 URI ``` Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; ``` 2. 定义需要查询的列名 ``` String[] projection = {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER}; ``` 3. 构造查询条件 ``` String selection = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " = ?"; String[] selectionArgs = new String[]{name}; ``` 其中,name 是要查找的联系人姓名。 4. 执行查询 ``` Cursor cursor = getContentResolver().query(uri, projection, selection, selectionArgs, null); ``` 5. 处理查询结果 ``` if (cursor != null && cursor.moveToFirst()) { do { String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); String phone = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); // 处理查询结果 } while (cursor.moveToNext()); cursor.close(); } ``` 以上代码片段可以在 Android 应用程序中使用。需要注意的是,需要声明读取联系人数据的权限。 ``` <uses-permission android:name="android.permission.READ_CONTACTS" /> ``` ### 回答2: 在Android系统中,我们可以通过姓名查找联系人的方法如下: 1. 首先,在AndroidManifest.xml文件中添加读取联系人信息的权限: ``` <uses-permission android:name="android.permission.READ_CONTACTS" /> ``` 2. 在activity中使用ContentResolver对象查询联系人数据库。代码示例如下: ``` ContentResolver contentResolver = getContentResolver(); Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + "=?", new String[]{name}, null); ``` 其中,name为待查询联系人的姓名。 3. 使用while循环遍历返回的Cursor对象,获取联系人的各项信息。代码示例如下: ``` while (cursor.moveToNext()) { String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); String contactName = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); // 获取联系人的其它信息,如电话号码等 } ``` 通过使用ContactsContract.Contacts._ID可以获取联系人的唯一ID,使用ContactsContract.Contacts.DISPLAY_NAME可以获取联系人的姓名。 4. 最后,记得在使用完Cursor对象后关闭它,以释放资源。 ``` cursor.close(); ``` 通过以上方法,我们可以通过姓名查找联系人,获取其它相关信息。注意,查询联系人信息需要在Activity或Fragment中进行,并且需要事先给予读取联系人信息的权限。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值