weiyi通讯录(二)获取联系人信息包括头像 增删改查功能,

本文主要是介绍weiyi通讯录(二)获取联系人信息包括头像 增删改查功能,,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

看了下第一期的访问量,100都没有可能很多人不需要吧,之前跟过一个大神学做项目,他都不吧核心代码告诉我,感觉没有一点分享精神,所以我就自己做。没跟他一起做

这里把上次的代码分享一下 我这里分享的跟我博客里面可能不一样因为我已经做完第一个模块了,代码就没有分开了

第一期的代码地址:http://download.csdn.net/detail/u010982856/8232855

分享的是类似的代码 基本跟我的是一样。如果需要的联系人我把 或者加入我的交流群吧

-----------欢迎加入交流群 386451316 有问题一起讨论吧

还废话一下 这期的代码需要在下一期公布地址

开始代码了  布局文件就不写了 这期说得是联系人的问题  在源代码中有相应代码  我也参考了一些 

源代码地址:sdk\sources\android-16\com\android\internal\telephony\ 里面是通讯录的所有操作

写一个bean来存放联系人信息(这就一废话是把)

package com.zw.weiyi.enety;
import android.graphics.Bitmap;
public class Person {private Long id;//联系人idpublic String name;//联系人名字public String phoneNumber;//联系人号码private Long iconId;//头像idprivate Bitmap icon;//头像private String sortLetters;  //显示数据拼音的首字母public String getSortLetters() {return sortLetters;}public void setSortLetters(String sortLetters) {this.sortLetters = sortLetters;}public Long getId() {return id;}public void setId(Long id) {this.id = id;}public Long getIconId() {return iconId;}public void setIconId(Long iconId) {this.iconId = iconId;}public Bitmap getIcon() {return icon;}public void setIcon(Bitmap icon) {this.icon = icon;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPhoneNumber() {return phoneNumber;}public void setPhoneNumber(String phoneNumber) {this.phoneNumber = phoneNumber;}
}
这里获取联系人方式有多种  一般很多人会使用AsyncQueryHandler asyncQueryHandler; // 异步查询数据库类对象

这种比较好一点  但我没有用这种 我使用的内容提供者 ContentResolver 来获取  这种更新能力不好

上代码吧 只传了核心代码 我觉得有这些就够了

// 查询条件public final static String[] PHONES_PROJECTION = new String[] {Phone.DISPLAY_NAME, Phone.NUMBER, Photo.PHOTO_ID, Phone.CONTACT_ID };
<span style="white-space:pre">	</span>
<span style="white-space:pre">	</span>//得到联系人的数据
<span style="white-space:pre">	</span>public List<Person> initContacts() {
<span style="white-space:pre">		</span>resolver = context.getContentResolver();
<span style="white-space:pre">		</span>cursor = context.getContentResolver().query(Phone.CONTENT_URI,
<span style="white-space:pre">				</span>PHONES_PROJECTION, null, null, null);
<span style="white-space:pre">		</span>personSize = cursor.getCount();
<span style="white-space:pre">		</span>pAdapter = new personAdapter(context,personsList);
<span style="white-space:pre">		</span>Person person = null;
<span style="white-space:pre">		</span>if (cursor != null) {
<span style="white-space:pre">			</span>for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor
<span style="white-space:pre">					</span>.moveToNext()) {
<span style="white-space:pre">				</span>person = new Person();
<span style="white-space:pre">				</span>person.setName(cursor.getString(0));
<span style="white-space:pre">				</span>person.setPhoneNumber(cursor.getString(1));
<span style="white-space:pre">				</span>// 头像id
<span style="white-space:pre">				</span>person.setIconId(cursor.getLong(2));
<span style="white-space:pre">				</span>// 联系人id
<span style="white-space:pre">				</span>person.setId(cursor.getLong(3));
<span style="white-space:pre">				</span>if (cursor.getLong(2) > 0) { // 头像默认为0
<span style="white-space:pre">					</span>Uri uri = ContentUris.withAppendedId(
<span style="white-space:pre">							</span>ContactsContract.Contacts.CONTENT_URI,
<span style="white-space:pre">							</span>person.getId());
<span style="white-space:pre">					</span>InputStream input = ContactsContract.Contacts
<span style="white-space:pre">							</span>.openContactPhotoInputStream(resolver, uri);
<span style="white-space:pre">					</span>person.setIcon(BitmapFactory.decodeStream(input));
<span style="white-space:pre">				</span>} else {// 没有则默认
<span style="white-space:pre">					</span>person.setIcon(BitmapFactory.decodeResource(getResources(),
<span style="white-space:pre">							</span>R.drawable.ic_launcher));
<span style="white-space:pre">				</span>}
<span style="white-space:pre">				</span>personsList.add(person);
<span style="white-space:pre">			</span>}
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>cursor.close();
<span style="white-space:pre">		</span>return personsList;
<span style="white-space:pre">	</span>}

这里再说一下操作的问题吧
插入联系人 这里插入的是手机里面的

	public void inster(String addnames, String addnames2, String addpnone,String addohter) throws Exception {uri = Uri.parse("content://com.android.contacts/raw_contacts");ContentResolver resolver = this.getContentResolver();ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>();ContentProviderOperation op1 = ContentProviderOperation.newInsert(uri).withValue("account_name", null).build();operations.add(op1);if (!TextUtils.isEmpty(addnames)) {// 为空uri = Uri.parse("content://com.android.contacts/data");ContentProviderOperation op2 = ContentProviderOperation.newInsert(uri).withValueBackReference("raw_contact_id", 0).withValue("mimetype", "vnd.android.cursor.item/name").withValue("data1", addnames+addnames2).build();operations.add(op2);}if (!TextUtils.isEmpty(addpnone)) {ContentProviderOperation op3 = ContentProviderOperation.newInsert(uri).withValueBackReference("raw_contact_id", 0).withValue("mimetype","vnd.android.cursor.item/phone_v2").withValue("data1", addpnone).build();operations.add(op3);}// 邮箱if (!TextUtils.isEmpty(addohter)) {ContentProviderOperation op4 = ContentProviderOperation.newInsert(uri).withValueBackReference("raw_contact_id", 0).withValue("mimetype","vnd.android.cursor.item/email_v2").withValue("data1", addohter).build();operations.add(op4);}resolver.applyBatch("com.android.contacts", operations);Toast.makeText(this, "添加成功", 1000).show();			}

删除 更新啊什么就一起说了

	// 删除联系人public void deleteContact(long rawContactId) {getContentResolver().delete(ContentUris.withAppendedId(RawContacts.CONTENT_URI,rawContactId), null, null);}// 更新联系人public void updataCotact(long rawContactId) {ContentValues values = new ContentValues();values.put(Phone.NUMBER, "13800138000");values.put(Phone.TYPE, Phone.TYPE_MOBILE);String where = ContactsContract.Data.RAW_CONTACT_ID + "=? AND "+ ContactsContract.Data.MIMETYPE + "=?";String[] selectionArgs = new String[] { String.valueOf(rawContactId),Phone.CONTENT_ITEM_TYPE };getContentResolver().update(ContactsContract.Data.CONTENT_URI, values,where, selectionArgs);}

基本都有了,代码就不上传了把 下次一起上传把


这篇关于weiyi通讯录(二)获取联系人信息包括头像 增删改查功能,的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1005681

相关文章

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

如何利用Java获取当天的开始和结束时间

《如何利用Java获取当天的开始和结束时间》:本文主要介绍如何使用Java8的LocalDate和LocalDateTime类获取指定日期的开始和结束时间,展示了如何通过这些类进行日期和时间的处... 目录前言1. Java日期时间API概述2. 获取当天的开始和结束时间代码解析运行结果3. 总结前言在J

java获取图片的大小、宽度、高度方式

《java获取图片的大小、宽度、高度方式》文章介绍了如何将File对象转换为MultipartFile对象的过程,并分享了个人经验,希望能为读者提供参考... 目China编程录Java获取图片的大小、宽度、高度File对象(该对象里面是图片)MultipartFile对象(该对象里面是图片)总结java获取图片

Java通过反射获取方法参数名的方式小结

《Java通过反射获取方法参数名的方式小结》这篇文章主要为大家详细介绍了Java如何通过反射获取方法参数名的方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、前言2、解决方式方式2.1: 添加编译参数配置 -parameters方式2.2: 使用Spring的内部工具类 -

Java如何获取视频文件的视频时长

《Java如何获取视频文件的视频时长》文章介绍了如何使用Java获取视频文件的视频时长,包括导入maven依赖和代码案例,同时,也讨论了在运行过程中遇到的SLF4J加载问题,并给出了解决方案... 目录Java获取视频文件的视频时长1、导入maven依赖2、代码案例3、SLF4J: Failed to lo

SpringBoot整合DeepSeek实现AI对话功能

《SpringBoot整合DeepSeek实现AI对话功能》本文介绍了如何在SpringBoot项目中整合DeepSeekAPI和本地私有化部署DeepSeekR1模型,通过SpringAI框架简化了... 目录Spring AI版本依赖整合DeepSeek API key整合本地化部署的DeepSeek

Python实现多路视频多窗口播放功能

《Python实现多路视频多窗口播放功能》这篇文章主要为大家详细介绍了Python实现多路视频多窗口播放功能的相关知识,文中的示例代码讲解详细,有需要的小伙伴可以跟随小编一起学习一下... 目录一、python实现多路视频播放功能二、代码实现三、打包代码实现总结一、python实现多路视频播放功能服务端开

使用Java实现获取客户端IP地址

《使用Java实现获取客户端IP地址》这篇文章主要为大家详细介绍了如何使用Java实现获取客户端IP地址,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 首先是获取 IP,直接上代码import org.springframework.web.context.request.Requ

在Mysql环境下对数据进行增删改查的操作方法

《在Mysql环境下对数据进行增删改查的操作方法》本文介绍了在MySQL环境下对数据进行增删改查的基本操作,包括插入数据、修改数据、删除数据、数据查询(基本查询、连接查询、聚合函数查询、子查询)等,并... 目录一、插入数据:二、修改数据:三、删除数据:1、delete from 表名;2、truncate

css实现图片旋转功能

《css实现图片旋转功能》:本文主要介绍了四种CSS变换效果:图片旋转90度、水平翻转、垂直翻转,并附带了相应的代码示例,详细内容请阅读本文,希望能对你有所帮助... 一 css实现图片旋转90度.icon{ -moz-transform:rotate(-90deg); -webkit-transfo