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

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

jsc9年前 (2016-09-23)笔记4391
/*
 * 根据电话号码取得联系人姓名
 */
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如何查看应用签名信息

Android如何查看应用签名信息

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

Android-ABIFilter-Device supports x86,but APK only supports armeabi-v7a,armeabi,x86_64

Android-ABIFilter-Device supports x86,but APK only supports armeabi-v7a,armeabi,x86_64

我遇到一个小问题Android 的 so 库和 ABI 配置我原先也是没有什么概念的,直到上个周,在我尝试跑一个程序的时候,真机运行没问题,但是用伟大的模拟机的时候,遇到了这么一个错误:模拟机的下面显示:Device supports x86,but APK only supports armeab...

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

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

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

Android 开源之StickyHeaderListView 标题渐变、吸附悬停、筛选分类、动态头部

Android 开源之StickyHeaderListView 标题渐变、吸附悬停、筛选分类、动态头部

StickyHeaderListView 是基于实际需求做出的灵活可定制的UI功能,具体实现功能如下:一、支持无限循环的广告位。二、高度可动态配置的Header2和Header3(使用GridView实现)。三、主要功能:分类、排序和筛选布局滑动到顶部后吸附、悬停。四、自定义FilterView筛选...

Android 路由设计最佳实践

Android 路由设计最佳实践

引子这篇文章会告诉你什么是路由,是为了解决什么问题才产生的业界现状是怎么样的,我们可以做什么来优化当前的问题路由设计思路是怎么样的,该怎么设计比较好如何用注解实现路由表URL的参数如何依赖注入到Activity、Fragement如何HookOnActivityResult,不需要再进行requst...