当前位置:首页 > Android > 笔记 > 正文内容

android根据电话号码查询联系人名称,导出通讯录所有联系人的方法

jsc9年前 (2016-09-23)笔记4443
/*
 * 根据电话号码取得联系人姓名
 */
public static String getContactNameByPhoneNumber(Context context, String address) {
    String[] projection = { ContactsContract.PhoneLookup.DISPLAY_NAME,
            ContactsContract.CommonDataKinds.Phone.NUMBER };

    // 将自己添加到 msPeers 中
    Cursor cursor = context.getContentResolver().query(
            ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
            projection, // Which columns to return.
            ContactsContract.CommonDataKinds.Phone.NUMBER + " = '"
                    + address + "'", // WHERE clause.
            null, // WHERE clause value substitution
            null); // Sort order.

    if (cursor == null) {
        Log.d(TAG, "getPeople null");
        return null;
    }
    for (int i = 0; i < cursor.getCount(); i++) {
        cursor.moveToPosition(i);

        // 取得联系人名字
        int nameFieldColumnIndex = cursor
                .getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME);
        String name = cursor.getString(nameFieldColumnIndex);
        return name;
    }
    return null;
}

/**
 * 获取所有联系人内容
 * @param context
 * @param address
 * @return
 */
public static String getContacts(Context context) {
    StringBuilder sb = new StringBuilder();
    
    ContentResolver cr = context.getContentResolver();
    Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
            null, null, null);

    if (cursor.moveToFirst()) {
        do {
            String contactId = cursor.getString(cursor
                    .getColumnIndex(ContactsContract.Contacts._ID));
            String name = cursor
                    .getString(cursor
                            .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
            //第一条不用换行
            if(sb.length() == 0){
                sb.append(name);
            }else{
                sb.append("\n" + name);
            }
            
            Cursor phones = cr.query(
                    ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                    null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                            + " = " + contactId, null, null);
            while (phones.moveToNext()) {
                String phoneNumber = phones
                        .getString(phones
                        .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                // 添加Phone的信息
                sb.append("\t").append(phoneNumber);
                
            }
            phones.close();
            
        } while (cursor.moveToNext());
    }
    cursor.close();
    return sb.toString();
    }

扫描二维码推送至手机访问。

版权声明:本文由微小站发布,如需转载请注明出处。

本文链接:https://jsc0.com/post/139.html

分享给朋友:

“android根据电话号码查询联系人名称,导出通讯录所有联系人的方法” 的相关文章

Android混淆异常处理还原混淆代码

一、寻找 mapping.txt文件    Google一番后发现了 mapping.txt这个东东。要想知道mapping.txt在哪,就先要弄清楚它是怎么来的。我们每次build,ProGuard就会输出下面几个文件:dump.txt介...

Android如何查看应用签名信息

Android如何查看应用签名信息

http://www.trinea.cn/android/android-view-signatures/介绍Android如何查看自己的应用签名及三方APK或系统APK签名信息,包含其中的MD5、SHA1、SHA256值和签名算法等信息。1、查看自己的应用签名   &...

Android 对应keycode(一)

各个输入法对蓝牙键盘兼容情况设备默认输入法必应输入法谷歌输入法百度输入法讯飞输入法QQ输入法搜狗输入法百度输入法小米版小米6输入字符缺失错误软键盘弹不出正常正常正常软键盘弹不出需要alt+shift输入字符缺失软键盘弹不出输入字符缺失错误正常魅族e1正常正常正常正常(专版)软键盘弹不出需要alt+s...

android 5.0以上通知栏、状态栏图标变成白色

android 5.0以上通知栏、状态栏图标变成白色

在5.0以上的系统上发现,平常的自定义notification出来的icon,居然在状态栏上变成了纯白色的icon。查看源码可知道:protected void applyColorsAndBackgrounds(StatusBarNotification sbn,...

安卓调用系统自带分享功能分享文字,分享大图片,仿好奇心日报分享长图片(不用申请微信微博官方sdk就能直接分享)

当前安卓分享一共三种方式1,调用安卓系统自带分享功能(可以分享大图)2,调用微信,微博支付宝等自己的官方分享sdk3,用友盟,shareSdk等集成好的sdk由于公司业务要求,需要分享一些长图,大图到微信,微博等。由于微信微博自己的官方sdk对图片有限制,比如微博要求缩略图不能大于32k,原图不能大...