iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android添加联系人到通讯录的方法
  • 820
分享到

Android添加联系人到通讯录的方法

2024-04-02 19:04:59 820人浏览 安东尼
摘要

目录字段联系人名字联系人昵称联系人头像联系人备注联系人号码联系人公司和职位网站联系人邮箱联系人地址添加方式1. 静默添加2. 跳转添加3. 添加到现有联系人权限字段 联系人名字

字段

联系人名字

名字不知道为什么,值设置了之后传过去没有,于是自己通过 Intent 最后又单独传了一次


// 联系人名字
ContentValues row1 = new ContentValues();String name = lastName + middleName + firstName;row1.put(ContactsContract.Data.MIMETYPE, 
ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);row1.put(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, 
name);row1.put(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, 
firstName);row1.put(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, 
lastName);row1.put(ContactsContract.CommonDataKinds.StructuredName.MIDDLE_NAME, 
middleName);

联系人昵称


ContentValues row2 = new ContentValues();
row2.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Nickname.CONTENT_ITEM_TYPE);
row2.put(ContactsContract.CommonDataKinds.Nickname.NAME, nickName);

联系人头像

这里需要将图片的 byte 数组传进去


ContentValues row3 = new ContentValues();
//添加头像
row3.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE);
Bitmap bitmap = BitmapFactory.decodeFile(photoFilePath);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFORMat.JPEG, 100, baos);
row3.put(ContactsContract.CommonDataKinds.Photo.PHOTO, baos.toByteArray());

联系人备注


// 联系人备注
ContentValues row4 = new ContentValues();
row4.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE);
row4.put(ContactsContract.CommonDataKinds.Note.NOTE, remark);

联系人号码

号码有很多种类型,电话,手机,传真,公司,家庭,等


ContentValues row5 = new ContentValues();
// 联系人的电话号码
addPhoneNumber(row5, values, mobilePhoneNumber, 
ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE);ContentValues row6 = new ContentValues();
// 联系人的公司电话
addPhoneNumber(row6, values, hostNumber, 
ContactsContract.CommonDataKinds.Phone.TYPE_COMPANY_MaiN);ContentValues row7 = new ContentValues();
// 联系人的工作号码
addPhoneNumber(row7, values, workPhoneNumber, 
ContactsContract.CommonDataKinds.Phone.TYPE_WORK_MOBILE);ContentValues row8 = new ContentValues();
// 联系人的工作传真
addPhoneNumber(row8, values, workFaxNumber, 
ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK);ContentValues row9 = new ContentValues();
// 联系人的住宅号码
addPhoneNumber(row9, values, homePhoneNumber, 
ContactsContract.CommonDataKinds.Phone.TYPE_HOME);ContentValues row10 = new ContentValues();
// 联系人的住宅传真
addPhoneNumber(row10, values, homeFaxNumber, 
ContactsContract.CommonDataKinds.Phone.TYPE_FAX_HOME);

//封装的添加方法
private void addPhoneNumber(
    ContentValues row, ArrayList<ContentValues> values, String phoneNumber, int type) {    
    row.put(ContactsContract.Data.MIMETYPE, 
    ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);    
    row.put(ContactsContract.CommonDataKinds.Phone.NUMBER, phoneNumber);    
    row.put(ContactsContract.CommonDataKinds.Phone.TYPE, type);    
    values.add(row);
}

联系人公司和职位


// 联系人公司和职位
ContentValues row11 = new ContentValues();
row11.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE);
row11.put(ContactsContract.CommonDataKinds.Organization.COMPANY, organization);
row11.put(ContactsContract.CommonDataKinds.Organization.TITLE, title);

网站


// 联系人网站
ContentValues row12 = new ContentValues();
row12.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.WEBsite.CONTENT_ITEM_TYPE);
row12.put(ContactsContract.CommonDataKinds.Website.URL, url);

联系人邮箱


// 插入Email数据
ContentValues row13 = new ContentValues();
row13.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE);
row13.put(ContactsContract.CommonDataKinds.Email.DATA, email);
row13.put(ContactsContract.CommonDataKinds.Email.TYPE, ContactsContract.CommonDataKinds.Email.TYPE_WORK);

联系人地址

地址分为家庭,工作和其他。有个问题,这里分段传入之后添加完成无法显示,只能自己将国家省市街道拼接,传入到了地址字段,这样就可以显示出来,但是邮政编码是无法显示的


//其他地址
ContentValues row14 = new ContentValues();
addAddress(row14, values, addressCountry, addressState, addressCity, addressStreet, addressPostalCode, ContactsContract.CommonDataKinds.StructuredPostal.TYPE_OTHER);
//家庭地址
ContentValues row15 = new ContentValues();
addAddress(row15, values, homeAddressCountry, homeAddressState, homeAddressCity, homeAddressStreet, homeAddressPostalCode, ContactsContract.CommonDataKinds.StructuredPostal.TYPE_HOME);
//工作地址
ContentValues row16 = new ContentValues();
addAddress(row16, values, workAddressCountry, workAddressState, workAddressCity, workAddressStreet, workAddressPostalCode, ContactsContract.CommonDataKinds.StructuredPostal.TYPE_WORK);

//添加地址方法
private void addAddress(ContentValues row, ArrayList<ContentValues> values, String country, String region, String city, String street, String addressPostalCode, int type) {
    row.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE);
    row.put(ContactsContract.CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS, country + region + city + street);
    row.put(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY, country);
    row.put(ContactsContract.CommonDataKinds.StructuredPostal.REGION, region);
    row.put(ContactsContract.CommonDataKinds.StructuredPostal.CITY, city);
    row.put(ContactsContract.CommonDataKinds.StructuredPostal.STREET, street);
    row.put(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE, addressPostalCode);
    row.put(ContactsContract.CommonDataKinds.StructuredPostal.TYPE, type);
    values.add(row);
}

添加方式

添加方式分为三种,一种是静默添加,直接存入数据库中,另外两种是跳转,直接新增或者添加到现有联系人中

1. 静默添加

以添加名字为例,直接插入到数据库


// 向RawContacts.CONTENT_URI空值插入,
// 先获取Android系统返回的rawContactId
// 后面要基于此id插入值
Uri rawContactUri = Mactivity.getContentResolver().insert(ContactsContract.RawContacts.CONTENT_URI, values);
long rawContactId = ContentUris.parseId(rawContactUri);
values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
// 内容类型
values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);
// 联系人名字
values.put(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, firstName);
values.put(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, lastName);
values.put(ContactsContract.CommonDataKinds.StructuredName.MIDDLE_NAME, middleName);
// 向联系人URI添加联系人名字
mActivity.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);

2. 跳转添加

将上边的所有 row 添加到数组中,一起传递


List<ContentValues> values = new ArrayList<>();
//添加需要设置的数据
...
Intent intent = new Intent(Intent.ACTION_INSERT, ContactsContract.Contacts.CONTENT_URI);
intent.putExtra(ContactsContract.Intents.Insert.NAME, name);
intent.putParcelableArrayListExtra(ContactsContract.Intents.Insert.DATA, values);
mActivity.startActivity(intent);

3. 添加到现有联系人

将上边的所有 row 添加到数组中,一起传递,跳转后需要选择联系人


List<ContentValues> values = new ArrayList<>();
//添加需要设置的数据
...
Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
intent.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE);
intent.putParcelableArrayListExtra(ContactsContract.Intents.Insert.DATA, values);
startActivity(intent);

权限

权限不能忘了,不然会闪退报错的,分别是联系人的读写权限


    <uses-permission android:/>
    <uses-permission android:/>

总结到此为止,还算比较详细,有补充欢迎评论。

以上就是Android添加联系人到通讯录的方法的详细内容,更多关于Android添加联系人到通讯录的资料请关注编程网其它相关文章!

--结束END--

本文标题: Android添加联系人到通讯录的方法

本文链接: https://www.lsjlt.com/news/126907.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android添加联系人到通讯录的方法
    目录字段联系人名字联系人昵称联系人头像联系人备注联系人号码联系人公司和职位网站联系人邮箱联系人地址添加方式1. 静默添加2. 跳转添加3. 添加到现有联系人权限字段 联系人名字 ...
    99+
    2024-04-02
  • Android保存联系人到通讯录的方法
    上一篇文章讲了如何获取所有联系人,这篇文章就讲下怎么保存联系人数据到本机通讯录。这里我就假设你已经拿到了要保存的联系人数据。 因为是一个工具类,所以我这里就只给一个方法了,也是很简单,但是写的没有读取联系人的数据那么多,要保存更多...
    99+
    2023-05-30
    android 联系人 通讯录
  • Android编程实现通讯录中联系人的读取,查询,添加功能示例
    本文实例讲述了Android编程实现通讯录中联系人的读取,查询,添加功能。分享给大家供大家参考,具体如下:先加二个读和写权限:<uses-permission android:name="android.permission.READ...
    99+
    2023-05-31
    android 通讯录 联系人
  • Python使用Rich type和TinyDB构建联系人通讯录
    目录引言工具准备通讯录特征如何创建联系人模型如何使用TinyDB创建数据库如何使用typer创建命令行如何使用Rich设计终端如何使用打字命令连接数据库操作引言 我们将学习如何构建一...
    99+
    2024-04-02
  • PHP实现多对一通讯录:简单实用的联系人管理
    PHP实现多对一通讯录:简单实用的联系人管理 随着社交网络的普及,人们的社交关系变得越来越复杂,管理联系人信息也变得越来越重要。在这种背景下,开发一个简单实用的联系人管理系统变得尤为重...
    99+
    2024-03-15
    php 多对一 通讯录 社交网络 php编写
  • Android编程操作手机通讯录的方法示例
    本文实例讲述了Android编程操作手机通讯录的方法。分享给大家供大家参考,具体如下:手机通讯录的操作是经常被用到的,例如添加联系人,删除联系人或者取得联系人信息。类似的操作还有收藏夹的操作,下面就针对通讯录的操作来做个小例子。同样的这次也...
    99+
    2023-05-30
    android 通讯录
  • Android给图片添加水印的方法
    这篇文章主要介绍Android给图片添加水印的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 前言PS:最近在项目执行过程中有这样一个需求,要求拍完照的图片必须达到以上的效果。需求分析:使用用预览布局Surf...
    99+
    2023-06-15
  • Android动态添加view的方法示例
    由于项目需求菜单写活,效果如下:这里的按钮数量是可变的.png由于不是可滑动控件,我用的百分比布局做的适配 LinearLayout typeLayout = (LinearLayout) headerView.findViewById(R...
    99+
    2023-05-30
    android 动态 添加view
  • React通过classnames库添加类的方法
    React添加Class的方式 在vue中添加class是一件非常简单的事情: 你可以通过传入一个对象, 通过布尔值决定是否添加类: <button :class="{ act...
    99+
    2024-04-02
  • 将图片添加到mysql中的方法
    小编给大家分享一下将图片添加到mysql中的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!将图片添加到mysql中的方法:首先将数据库存储图片的字段类型设置为blob二进制大对象类型;然后...
    99+
    2024-04-02
  • 解决android手机导出的通讯录vcf文件乱码方法
    要解决Android手机导出的通讯录vcf文件乱码的问题,可以尝试以下方法:1. 修改编码格式:打开vcf文件,使用文本编辑器(例如...
    99+
    2023-09-08
    Android
  • 添加mysql到环境变量中的方法
    这篇文章将为大家详细讲解有关添加mysql到环境变量中的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。添加mysql到环境变量中的方法:1、打开/etc/profil...
    99+
    2024-04-02
  • 如何使用快捷方式应用程序在iPhone上查找新添加的联系人
    您是否曾经经历过完全忘记或无法回忆起最近在iPhone上保存了某人的联系人的情况?如果是,您不必再担心这一点。在深入研究此事并对其进行研究后,我们找到了一个解决方案/技巧,您可以在快捷方式的帮助下找到iPhone上所有最近添加的联系人。在本...
    99+
    2023-07-10
  • 在红帽系统添加mysql的方法
    小编给大家分享一下在红帽系统添加mysql的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!在红帽系统添加mysql的方法:首先以root用户登录红帽系统;然后创建mysql用户和mysql...
    99+
    2024-04-02
  • 如何将twitter帐户快速添加到Win8人脉有什么好的方法
      在Win8系统中,跟往常的系统相比新增加了“人脉”的功能,此功能让用户们激动不已,可又苦于不知道如何将twitter帐户添加至其中。那么今天我们就为大家介绍下添加的操作方法吧。   我们可通过...
    99+
    2023-06-06
    twitter Win8 人脉 帐户 方法
  • HBuilder开发uniapp添加android的模拟器的方法
    我们知道使用uniapp开发多端app非常方便,开发过程中的模拟器也可以提高我们测试代码的效率。但我们按uniapp官网的方法,上google的官网下载模拟器,往往非常不方便。 下面我们来看一下使用其他模拟器的方法。 我们知道android...
    99+
    2023-09-02
    uni-app adb HBuilder Android模拟器
  • 在Windows7系统中添加打印目录的简单快捷方法
      如何在Windows7系统中添加打印目录呢?相信不少人可能有点苦恼,在这里,小编给大家介绍一个方法,希望对大家有所帮助。   首先我们需要创建一个Printdir.BAT文件。新建一个记事本打开,然后把以下内容粘贴进...
    99+
    2023-06-13
    Windows7 打印目录 打印 添加 目录 系统
  • c++中ADO添加记录的方法是什么
    在C++中使用ADO(ActiveX Data Objects)库来添加记录,需要以下几个步骤:1. 引入头文件和命名空间:&nbs...
    99+
    2023-08-08
    c++
  • C#使用Log4net添加日志记录的方法
    目录一、Log4net二、使用日志库1. 添加库2. 配置log4net3. 使用log4net4. 结果一、Log4net 官方网站:https://logging.apache....
    99+
    2024-04-02
  • word文件添加目录的方法是什么
    在Word文件中添加目录的方法如下:1. 打开Word文件,将光标放置在你想要插入目录的位置。2. 在菜单栏中选择“引用”选项卡。3...
    99+
    2023-10-10
    word
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作