`

android——获取手机联系人的工具类

阅读更多

这个工具类只获取了手机联系人的姓名和电话号码,

1、首先将这个姓名、电话号码封装成domain:

package com.wang.domain;

public class ContactInfo {

	private String name;
	private String phono;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPhono() {
		return phono;
	}

	public void setPhono(String phono) {
		this.phono = phono;
	}
}

 2、工具类:

package com.wang.engine;

import java.util.ArrayList;
import java.util.List;

import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;

import com.wang.mobilesafe.domain.ContactInfo;

/**
 * 提供手机联系人信息的类
 * 
 * @author HeJW
 *
 */
public class ContactInfoProvider {

	/**
	 * 获取手机系统里面所有联系人信息
	 * 
	 * @return 所有联系人信息的集合
	 */
	public static List<ContactInfo> getContactInfos(Context context) {

		List<ContactInfo> infos = new ArrayList<ContactInfo>();
		
		ContentResolver resolver = context.getContentResolver();

		Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
		Uri dataUri = Uri.parse("content://com.android.contacts/data");

		Cursor cursor = resolver.query(uri, new String[] { "contact_id" },
				null, null, null);
		while (cursor.moveToNext()) {

			String id = cursor.getString(0);
			if (id != null) {

				ContactInfo info = new ContactInfo();
				
				Cursor dataCursor = resolver.query(dataUri, new String[] {
						"mimetype", "data1" }, "raw_contact_id=?",
						new String[] { id }, null);
				while (dataCursor.moveToNext()) {

					String mime = dataCursor.getString(0);
					String data1 = dataCursor.getString(1);
					if ( "vnd.android.cursor.item/name".equals(mime) ) {
						info.setName(data1);
					} else if ( "vnd.android.cursor.item/phone_v2".equals(mime) ) {
						info.setPhono(data1);
					}
				}
				infos.add(info);
				dataCursor.close();
			}
		}
		cursor.close();

		return infos;
	}
}

 

1
1
分享到:
评论

相关推荐

    android——手机通讯录Demo

    总之,"android——手机通讯录Demo"项目涵盖了Android开发中的多个关键知识点,包括系统API的使用、UI设计、数据管理以及性能优化,是提升Android开发者技能的绝佳实践。通过这个项目,开发者可以深入理解Android...

    Android项目获取手机通讯录的实战应用(含SIM卡中的联系人).rar

    在Android平台上,获取手机通讯录是一项常见的功能,无论是开发社交应用、备份工具还是其他与通讯相关的应用程序,都需要访问用户手机的联系人数据。本实战应用将深入探讨如何从设备内部存储以及SIM卡中读取联系人...

    安卓Android源码——Android导入导出txt通讯录工具.zip

    这可能涉及到查询ContentResolver,通过ContactsContract.ContentUri获取联系人数据,再将结果转换为可读的字符串格式。 此外,为了实现用户友好的界面,开发者可能会使用Android的Activity和Fragment。Activity是...

    安卓Android源码——安卓Android导入导出txt通讯录工具.rar

    这个压缩包文件“安卓Android源码——安卓Android导入导出txt通讯录工具.rar”显然提供了一个实用工具,它能够帮助用户将他们的通讯录数据在Android设备和纯文本(txt)文件之间进行转换。以下是对这一技术实现的...

    Android源码——一个批量删除联系人的Demo.zip

    它是一个ContentProvider的接口,用于获取联系人信息、创建、更新和删除联系人。 3. **ContentResolver和Uri**: 要操作联系人,你需要通过ContentResolver实例来与ContentProvider交互。ContentResolver提供了...

    android读取手机联系人

    在Android系统中,读取手机联系人是一项常见的功能,它涉及到Android的核心组件——ContentProvider。ContentProvider是Android四大组件之一,用于在不同的应用程序之间共享数据。在这个场景下,我们将主要探讨如何...

    Android源码——完整的通讯录项目源码.7z

    6. **联系人API**:Android提供了Contact API供应用访问和操作系统联系人,开发者需要熟悉ContactsContract类和相关常量,以便获取、添加、修改或删除联系人。 7. **UI组件**:应用可能使用ListView或RecyclerView...

    安卓Android源码——我的通讯录.zip

    4. **权限管理**:访问用户的联系人数据需要获取相应的权限,如在AndroidManifest.xml中声明`&lt;uses-permission&gt;`标签,请求`READ_CONTACTS`和`WRITE_CONTACTS`权限。 5. **适配器(Adapter)**:在显示联系人列表时...

    Android源码——MyContacts通讯录源码.7z

    4. 权限管理:在Android中,访问联系人数据需要获取相应的权限。MyContacts展示了如何在Manifest文件中声明权限,以及在运行时请求用户授权。 5. ContentResolver:ContentResolver是与ContentProvider交互的接口,...

    安卓Android源码——Phone.rar

    Android的联系人应用与Phone模块紧密相关,它们共同维护电话簿数据。Phone模块中的`IInCallService`接口允许在通话过程中访问联系人信息,例如显示来电者的名字。联系人数据存储在SQLite数据库中,可通过...

    安卓Android源码——精致人性化安卓通讯录项目.zip

    8. 联系人API:熟悉Android系统的联系人API,学习如何读取、添加、修改和删除联系人。 9. 搜索功能:实现搜索框的即时搜索和联想,提高用户体验。 10. 测试与调试:学习如何编写单元测试,使用Android Studio的调试...

    Android源码——仿苹果通话界面源码.7z

    7. **UI响应**:为了确保良好的用户体验,开发者需要优化UI的响应速度,如使用异步加载图片库(如Glide或Picasso)来加载联系人头像,避免阻塞主线程。 8. **适配不同设备**:Android设备有着广泛的屏幕尺寸和...

    Android源码——仿开心网源代码.zip

    7. **权限管理**:如果应用需要访问用户隐私数据,如联系人或位置,就需要获取相应的运行时权限。源码中可能包含如何请求和处理权限的示例。 8. **通知与消息推送**:社交应用往往需要实时通知用户新消息或动态。...

    安卓Android源码——Xabber客户端.zip

    RecyclerView用于展示联系人列表,它在内存和性能上比ListView更优;Fragment则用于管理多个视图,使得界面更加灵活;PagerAdapter则用于在ViewPager中实现页面滑动效果,为用户提供平滑的多页面浏览体验。 此外,...

    安卓Android源码——字母排序类似通讯录字母检索.zip

    2. **AlphabetIndexer**: 这是Android SDK提供的一种工具类,用于创建一个索引,使用户可以通过点击侧滑的字母栏快速跳转到对应的列表位置。我们需要创建一个AlphabetIndexer对象,并将其与ListView的Adapter关联...

    安卓Android源码——二维码扫描的实现.rar

    - 解析扫描到的二维码数据,根据数据类型(URL、文本、联系人信息等)执行相应操作。 - 可以弹出对话框让用户确认操作,或者直接跳转到指定页面。 8. **测试与调试**: - 在真机或模拟器上进行充分的测试,确保...

    安卓Android源码——[安卓开源]仿QQ列表通讯录项目.zip

    1. **Android SDK**:所有Android应用的基础,它提供了构建、测试和调试Android应用所需的所有工具。开发者需要对Android SDK有深入的理解,包括API级别、构建工具(如Gradle)和模拟器。 2. **布局设计**:项目中...

    Android Studio绿豆通讯录

    "简单的SQLite查询"这部分内容会介绍如何创建数据库表,插入、更新和删除数据,以及执行基本的查询操作,如SELECT语句,来获取并显示通讯录中的联系人信息。 在项目的文件列表中,我们看到以下几个关键文件: 1. `...

    2011.08.26——— android ListView之多个item布局

    在Android应用设计中,ListView通常用于显示如联系人列表、新闻摘要或电商应用的商品列表等信息。 首先,我们需要了解ListView的工作原理。ListView通过Adapter与数据源连接,Adapter负责将数据转化为可显示的View...

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--内容提供者之联系人读写与批量操作 |--内容提供者之获取通话记录 |--内容提供者的定义 |--写入联系人信息 |--利用FinalHttp实现多线程断点续传 |--加密之MD5 |--动画Animation详解 |--动画之view左右抖动 |--动画...

Global site tag (gtag.js) - Google Analytics