Android 通讯录存入手机电话邮箱地址等信息

Posted QXXXD

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 通讯录存入手机电话邮箱地址等信息相关的知识,希望对你有一定的参考价值。

存储 工具类

  • tips: 在存储入手机通讯录之前,需要获取手机通讯录运行时权限

创建想要存入信息的 ContentProviderOperation实体,并填入对应信息和必填的ID,添加到ArrayList中,再使用ContentResolverapplyBatch方法批量操作。

public static void InsertContact(Context context, ContactBean contact) 
    ContentValues values = new ContentValues();

    Uri rawContactUri = Uri.parse("content://com.android.contacts/raw_contacts");
    ContentResolver resolver = context.getContentResolver();

    // 生成 id
    long rawContactId = ContentUris.parseId(resolver.insert(rawContactUri, values));

    // 插入数据
    rawContactUri = Uri.parse("content://com.android.contacts/data");
    ArrayList<ContentProviderOperation> ops = new ArrayList<>();
    // 写入名字
    if (null != contact.getName() && !"".equals(contact.getName())) 
        ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
                .withValue(ContactsContract.Data.RAW_CONTACT_ID, rawContactId)
                .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
                .withValue(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, contact.getName())
                .build());
    

    // 写入手机号
    if (null != contact.getMobile()) 
        for (MobileBean mobile : contact.getMobile()) 
            if (null != mobile.getContent() && !"".equals(mobile.getContent())) 
                ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
                        .withValue(ContactsContract.Data.RAW_CONTACT_ID, rawContactId)
                        .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
                        .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, mobile.getContent())
                        .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE)
                        .build());
            
        
    
    // 座机
    if (null != contact.getPhone()) 
        for (PhoneBean phone : contact.getPhone()) 
            if (null != phone.getContent() && !"".equals(phone.getContent())) 
                ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
                        .withValue(ContactsContract.Data.RAW_CONTACT_ID, rawContactId)
                        .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
                        .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phone.getContent())
                        .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_WORK)
                        .build());
            
        
    

    // 邮箱
    if (null != contact.getEmail()) 
        for (EmailBean email : contact.getEmail()) 
            if (null != email.getContent() && !"".equals(email.getContent())) 
                ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
                        .withValue(ContactsContract.Data.RAW_CONTACT_ID, rawContactId)
                        .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)
                        .withValue(ContactsContract.CommonDataKinds.Email.ADDRESS, email.getContent())
                        .withValue(ContactsContract.CommonDataKinds.Email.TYPE, ContactsContract.CommonDataKinds.Email.TYPE_WORK)
                        .build());
            
        
    

    // 公司
    if (null != contact.getCompany()) 
        for (CompanyBean company : contact.getCompany()) 
            ContentProviderOperation.Builder builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
                    .withValue(ContactsContract.Data.RAW_CONTACT_ID, rawContactId)
                    .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE)
                    .withValue(ContactsContract.CommonDataKinds.Organization.TYPE, ContactsContract.CommonDataKinds.Organization.TYPE_WORK);
            if (null != company.getComname() && !"".equals(company.getComname())) 
                builder.withValue(ContactsContract.CommonDataKinds.Organization.COMPANY, company.getComname());
            
            if (null != company.getZhiwu() && !"".equals(company.getZhiwu())) 
                builder.withValue(ContactsContract.CommonDataKinds.Organization.DEPARTMENT, company.getZhiwu());
                builder.withValue(ContactsContract.CommonDataKinds.Organization.OFFICE_LOCATION, company.getZhiwu());
                builder.withValue(ContactsContract.CommonDataKinds.Organization.JOB_DESCRIPTION, company.getZhiwu());
                builder.withValue(ContactsContract.CommonDataKinds.Organization.PHONETIC_NAME, company.getZhiwu());
                builder.withValue(ContactsContract.CommonDataKinds.Organization.TITLE, company.getZhiwu());
            

            ops.add(builder.build());
        
    

    // 地址
    if (null != contact.getAddress() && !"".equals(contact.getAddress())) 
        ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
                .withValue(ContactsContract.Data.RAW_CONTACT_ID, rawContactId)
                .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE)
                .withValue(ContactsContract.CommonDataKinds.StructuredPostal.TYPE, ContactsContract.CommonDataKinds.StructuredPostal.TYPE_WORK)
                .withValue(ContactsContract.CommonDataKinds.StructuredPostal.STREET, contact.getAddress())
                .build());
    


    try 
        resolver.applyBatch(ContactsContract.AUTHORITY, ops);
     catch (OperationApplicationException | RemoteException e) 
        e.printStackTrace();
    
 

手机号验重工具类

/**
 * 判断某个手机号是否存在
 */
private boolean isPhoneExist(Context context, String phoneNum) 
    Cursor cursor = null;
    Uri uri = Uri.parse("content://com.android.contacts/data/phones/filter/" + phoneNum);
    ContentResolver resolver = context.getContentResolver();
    cursor = resolver.query(uri, new String[]ContactsContract.Data.DISPLAY_NAME,
            null, null, null);
    if (cursor.moveToFirst()) 
        cursor.close();
        return true;
    

    cursor.close();
    return false;
 

以上是关于Android 通讯录存入手机电话邮箱地址等信息的主要内容,如果未能解决你的问题,请参考以下文章

Android获取手机联系人的姓名和电话

利用谷歌地图采集外贸客户的电话和手机号码

Python 手机通讯录/学生信息管理系统

企业微信js-jdk保存电话号码到通讯录

exchange 2010对手机邮箱执行远程擦除

c语言程序设计——编一个通讯录管理程序:序号 姓名 电话 地址