- 浏览: 173176 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
dupeng41255:
问一下,。com的接口 是不是需要注册啊?我调用的时候返回说需 ...
java实现whois域名查询 -
feiyu86:
比喻的非常贴切。。
synchronized方法和代码块的使用 -
罡风笑:
贴结果:CBH 蜀汉 绝顶 刀客
开心一下 你古代的身份。超级好玩~
最近在开发android平台的联系人部分,有点总结和大家分享一下:
参数:
String name, 联系人姓名
String homePhone, 家庭电话
String mobile, 手机
String workphone, 公司电话
String workfax, 公司传真
String emailAddr, 邮件地址
String msn,
String skype,
String qq,
String company, 公司名称
String position, 职位
String homeAddr, 家庭地址
String companyAddr 公司地址
android在保存联系人的时候要特别注意的是 电话和手机的输入格式,以及添加IM时候要主要private属性
1) 手机格式: 1-390-123-1122, 经过验证1开头的号码都被认为按照手机格式显示
2) 电话及传真格式:010-123-11111,经过验证非1开头的号码都被认为按照电话格式显示
3) 添加IM时要加上 values.put(ContactMethods.ISPRIMARY, 0);
下面看看我写的代码吧:
ContentValues values = new ContentValues();
values.put(People.NAME, name);
values.put(Contacts.People.STARRED, 0);//很重要
Uri newPerson = Contacts.People.createPersonInMyContactsGroup(getContentResolver(), values);
Uri numberUri = null;
if (!ifEmpty(homePhone)) {
values.clear();
numberUri = Uri.withAppendedPath(newPerson, People.Phones.CONTENT_DIRECTORY);
values.put(Contacts.Phones.TYPE, People.Phones.TYPE_HOME);
values.put(People.NUMBER, homePhone);
getContentResolver().insert(numberUri, values);
}
if (!ifEmpty(mobile)) {
values.clear();
numberUri = Uri.withAppendedPath(newPerson, People.Phones.CONTENT_DIRECTORY);
values.put(Contacts.Phones.TYPE, People.Phones.TYPE_MOBILE);
values.put(People.NUMBER, mobile);
getContentResolver().insert(numberUri, values);
}
if (!ifEmpty(workphone)) {
values.clear();
numberUri = Uri.withAppendedPath(newPerson, People.Phones.CONTENT_DIRECTORY);
values.put(Contacts.Phones.TYPE, People.Phones.TYPE_WORK);
values.put(People.NUMBER, workphone);
getContentResolver().insert(numberUri, values);
}
if (!ifEmpty(workfax)) {
values.clear();
numberUri = Uri.withAppendedPath(newPerson, People.Phones.CONTENT_DIRECTORY);
values.put(Contacts.Phones.TYPE, People.Phones.TYPE_FAX_WORK);
values.put(People.NUMBER, workfax);
getContentResolver().insert(numberUri, values);
}
if (!ifEmpty(emailAddr)) {
values.clear();
numberUri = Uri.withAppendedPath(newPerson, People.ContactMethods.CONTENT_DIRECTORY);
values.put(Contacts.ContactMethods.KIND, Contacts.KIND_EMAIL);
values.put(Contacts.ContactMethods.DATA, emailAddr);
values.put(Contacts.ContactMethods.TYPE, Contacts.ContactMethods.TYPE_HOME);
getContentResolver().insert(numberUri, values);
}
//add IM tools
if (!ifEmpty(msn)) {
values.clear();
numberUri = Uri.withAppendedPath(newPerson, People.ContactMethods.CONTENT_DIRECTORY);
values.put(Contacts.ContactMethods.KIND, Contacts.KIND_IM);
values.put(ContactMethods.TYPE, ContactMethods.TYPE_OTHER);
values.put(Contacts.ContactMethods.DATA, msn);
values.put(ContactMethods.AUX_DATA, ContactMethods.encodePredefinedImProtocol(ContactMethods.PROTOCOL_MSN));
values.put(ContactMethods.ISPRIMARY, 0); //很重要,否则添加时出错
getContentResolver().insert(numberUri, values);
}
if (!ifEmpty(skype)) {
values.clear();
numberUri = Uri.withAppendedPath(newPerson, People.ContactMethods.CONTENT_DIRECTORY);
values.put(Contacts.ContactMethods.KIND, Contacts.KIND_IM);
values.put(ContactMethods.TYPE, ContactMethods.TYPE_OTHER);
values.put(Contacts.ContactMethods.DATA, skype);
values.put(ContactMethods.AUX_DATA, ContactMethods.encodePredefinedImProtocol(ContactMethods.PROTOCOL_SKYPE));
values.put(ContactMethods.ISPRIMARY, 0); //很重要,否则添加时出错
getContentResolver().insert(numberUri, values);
}
if (!ifEmpty(qq)) {
values.clear();
numberUri = Uri.withAppendedPath(newPerson, People.ContactMethods.CONTENT_DIRECTORY);
values.put(ContactMethods.KIND, Contacts.KIND_IM);
values.put(ContactMethods.TYPE, ContactMethods.TYPE_OTHER);
values.put(Contacts.ContactMethods.DATA, qq);
values.put(ContactMethods.AUX_DATA, ContactMethods.encodePredefinedImProtocol(ContactMethods.PROTOCOL_QQ));
values.put(ContactMethods.ISPRIMARY, 0); //很重要,否则添加时出错
getContentResolver().insert(numberUri, values);
}
// add company and title
if (!ifEmpty(company) || !ifEmpty(position)) {
values.clear();
numberUri = Uri.withAppendedPath(newPerson, Contacts.Organizations.CONTENT_DIRECTORY);
if (!ifEmpty(company)) {
values.put(Contacts.Organizations.COMPANY, company);
}
if (!ifEmpty(position)) {
values.put(Contacts.Organizations.TITLE, position);
}
values.put(Contacts.Organizations.TYPE, Contacts.Organizations.TYPE_WORK);
getContentResolver().insert(numberUri, values);
}
//add address
if (!ifEmpty(homeAddr)) {
values.clear();
numberUri = Uri.withAppendedPath(newPerson, People.ContactMethods.CONTENT_DIRECTORY);
values.put(Contacts.ContactMethods.KIND, Contacts.KIND_POSTAL);
values.put(Contacts.ContactMethods.TYPE, Contacts.ContactMethods.TYPE_HOME);
values.put(Contacts.ContactMethods.DATA, homeAddr);
getContentResolver().insert(numberUri, values);
}
if (!ifEmpty(companyAddr)) {
values.clear();
numberUri = Uri.withAppendedPath(newPerson, People.ContactMethods.CONTENT_DIRECTORY);
values.put(Contacts.ContactMethods.KIND, Contacts.KIND_POSTAL);
values.put(Contacts.ContactMethods.TYPE, Contacts.ContactMethods.TYPE_WORK);
values.put(Contacts.ContactMethods.DATA, companyAddr);
getContentResolver().insert(numberUri, values);
}
-------------------------------
private boolean ifEmpty(String input) {
if (input == null || input.length() == 0 || "".equals(input)) {
return true;
} else {
if ("".equals(input.trim())) {
return true;
}
return false;
}
}
-------------------------------------
格式化电话号码的函数
private String formatPhoneNumber(String input) {
if (input.startsWith("1")) {
if (input.length() == 1) {
return input;
} else if (input.length() > 1 && input.length() < 5) {
return input.substring(0, 1) + "-" + input.substring(1, input.length());
} else if (input.length() >= 5 && input.length() < 8) {
return input.substring(0, 1) + "-" + input.substring(1, 4) + "-" + input.substring(4, input.length());
} else if (input.length() >= 8) {
return
input.substring(0, 1) + "-" + input.substring(1, 4) + "-" +
input.substring(4, 7) + "-" + input.substring(7, input.length());
}
} else {
if (input.length() <= 3) {
return input;
} else if (input.length() > 3 && input.length() < 7) {
return input.substring(0, 3) + "-" + input.substring(3, input.length());
} else if (input.length() >= 7) {
return input.substring(0, 3) + "-" + input.substring(3, 6) + "-" + input.substring(6, input.length());
}
}
return "";
}
欢迎大家热烈讨论,看android 模拟器 contact部分的源码还有一个途径:
发表评论
-
Android 属性动画(Property Animation) 完全解析 (下)
2016-02-22 14:49 1033版权声明:本文为博主原创文章,未经博主允许不得转载。 ... -
Android 属性动画(Property Animation) 完全解析 (上)
2016-02-22 14:47 699版权声明:本文为博主原创文章,未经博主允许不得转载。 ... -
Windows系统中Maven的安装与配置以及m2eclipse插件的安装
2014-04-30 16:06 1165近期公司的一个项目需要用maven搭建,所以把maven的环 ... -
Gallery自动循环滚动,手动滚动的平滑切换及存在问题
2012-11-06 10:51 3507来自:http://blog.csdn.net/lenghun ... -
Gallery自动循环滚动,手动滚动的平滑切换及存在问题
2012-11-06 10:34 7来自:http://blog.csdn.net/lenghun ... -
VLC for Android on Linux
2012-07-12 14:28 1915来自:http://wiki.videolan.org/And ... -
Android模拟器对应电脑键盘快捷键
2012-01-10 00:01 1372Home键(小房子键) 在键盘上映射的是home键。 ... -
Android的gallery实现无限循环和降低选择频率
2011-07-20 17:55 1468gallery是一个很好用的控 ... -
Android编译问题:Only 64-bit build environments are supported beyond froyo/2.2
2011-03-07 19:01 1108在使用: $ repo init -u git://An ... -
任务管理器正在运行的程序(2)
2010-12-23 14:36 1688RunningTaskInfo AndroidManifes ... -
任务管理器正在运行的程序(1)
2010-12-23 14:26 1500RunningTaskInfo 范例说明 ... -
android 监听文件和目录的创建删除移动等事件
2010-11-11 15:14 1740android.os下的FileObserver类是一个 ... -
animation知识学习
2010-10-22 14:07 2013LinearInterpolator 变化率是个常数,即 f ... -
Android 页面切换动画效果
2010-10-18 12:54 4136在Android 2.0之后有了ove ... -
android自适应屏幕方向和大小
2010-09-27 16:51 1726一:不同的layoutAndroid手机屏幕大小不一,有 ... -
Android图片处理的的一些方法
2010-08-02 18:54 63101.图片加载方法,方便用户加载图片 /**** 加载本地图片 ... -
OMA-SyncML-DataSyncProtocol-V1_1_2-20030612-A
2010-07-02 12:12 640手机联系人等信息同步中使用 -
Android取得屏幕分辨率
2010-05-31 10:32 922WindowManager windowManager = g ... -
Content Providers
2010-03-04 23:21 1173来源:http://developer.andro ... -
Android基础 : Android Content Provider[转]
2010-03-02 23:09 1063Android应用程序可以使用文件或SqlLite数据库来存储 ...
相关推荐
解决添加联系人的表中添加数据以及读取已保存的数据 3. 实现通讯录的基本功能的具体实现。 4. 对通讯录界面的具体设计,给人一种方便的操作通道。 5. 灵活应用各种系统库函数实现完整的通讯录。 Android开发实验---...
9.1.4 在线状态和联系人列表简介 282 9.1.5 管理聊天会话 285 9.1.6 发送和接收数据信息 289 9.2 SMS简介 291 9.2.1 在应用程序中使用SMS 291 9.2.2 发送SMS信息 291 9.2.3 监听SMS消息 294 9.2.4 紧急响应...
Android Android Android Android 开发背景 � 计算技术、无线接入技术的发展,使嵌入式系统逐渐有能力对桌面系统常规业务进行支持。 � 谷歌长期以来奉行的移动发展战略:通过与全球各地的手机制造商和移动运营商...
android studio 开发的一款手机联系人app, 该软件功能主要包括以下八个方面: 1. 获取访问手机联系人权限,读取手机原有联系人到App中. 2.新建联系人号码和姓名,并刷新保存。 3.编辑选择性删除已创建的联系人...
传智播客_Andorid_20天精通Android开发视频_第13天视频_视频_10_保存联系人数据完成.avi
传智播客_Andorid_20天精通Android开发视频_第13天视频_视频_12_保存联系人数据_界面实现.avi
|--内容提供者之联系人读写与批量操作 |--内容提供者之获取通话记录 |--内容提供者的定义 |--写入联系人信息 |--利用FinalHttp实现多线程断点续传 |--加密之MD5 |--动画Animation详解 |--动画之view左右抖动 |--动画...
实例060: 保存联系人信息 194 第5章 电话和短信实例集锦 197 实例061: 编写一个拨号程序 197 实例062: 发送一条短信 200 实例063: 单击按钮实现拨号功能 203 实例064: 一个通用发短信程序 206 实例065: 收到...
22_访问通信录中的联系人和添加联系人.avi 所在项目:contacts 23_网络通信之网络图片查看器.avi 所在项目:netimage & Web端应用:web 24_网络通信之网页源码查看器.avi 所在项目:HtmlViewer & Web端应用:web 25_...
第9章 P2P通信 9.1 Android即时消息简介 9.1.1 使用GTalk服务 9.1.2 和GTalk服务绑定 9.1.3 建立GTalk连接,开始一个IM会话 9.1.4 在线状态和联系人列表简介 9.1.5 管理聊天会话 9.1.6 发送和接收数据信息 9.2 SMS...
信录中的联系人和添加联系人,23_网络通信之网络图片查看器,24_网络通信之网页源码查看器,25_网络通信之资讯客户 端,26_采用JSON格式返回数据给资讯客户端,27_网络通信之通过GET和POST方式提交参数给web应用,...
1.5 使用Android SDK开发最终用户应用程序 1.5.1 Android模拟器 1.5.2 Android UI 1.5.3 Android基础组件 1.5.4 高级UI概念 1.5.5 Android Service组件 1.5.6 Android媒体和电话组件 1.5.7 ...
鉴于市场上用户的手机型号、种类、屏幕分辨率等参差不齐,传统方式根据主流系统分别开发相应的系统耗时又耗力,为了高效开发并节约开发项目成本,本文采用Android+HTML5相结合的方式进行移动端Web系统的设计研发工作...
Android 项目是使用 Android 操作系统和相关开发工具开发的一款移动应用程序。Android 平台提供了丰富的功能和接口,开发人员可以使用 Java 或 Kotlin 等编程语言编写 Android 应用程序。Android 项目也可以是针对...
9.1.4 在线状态和联系人列表简介 9.1.5 管理聊天会话 9.1.6 发送和接收数据信息 9.2 SMS简介 9.2.1 在应用程序中使用SMS 9.2.2 发送SMS信息 9.2.3 监听SMS消息 9.2.4 紧急响应的SMS示例 9.2.5 紧急响应自动化 9.3 ...
22_访问通信录中的联系人和添加联系人.avi 所在项目:contacts 23_网络通信之网络图片查看器.avi 所在项目:netimage & Web端应用:web 24_网络通信之网页源码查看器.avi 所在项目:HtmlViewer & Web端应用:web 25_...
变更日志1.7(主动开发) 与联系人集成1.6(2015-02-09) 新功能:能够录制无限音! 新功能:能够为已保存的音调创建标题! 新功能:能够编辑保存的记录增强功能:现在更容易看到Backspace按钮代码结构净简化...