`
yelinsen05
  • 浏览: 497881 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Android 获取Contacts 联系人 姓名 号码 照片信息

阅读更多
直接贴代码不解释
private void getCursors() {
		Cursor phoneCursor = this.managedQuery(
				ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,
				null, null);
		Cursor callLogCursor = this.managedQuery(CallLog.Calls.CONTENT_URI ,
				new String[] { CallLog.Calls.NUMBER,
						CallLog.Calls.CACHED_NAME, CallLog.Calls.TYPE },
						 "1=1) group by "+CallLog.Calls.NUMBER+" -- (", null, null);

		// update listshow
		if (0 < phoneCursor.getCount()||0 < callLogCursor.getCount()) {
			updateCursorList(phoneCursor,callLogCursor);
		}
	}



private void updateCursorList(Cursor phoneCursor,Cursor callLogCursor) {
		Cursor contactCursor = null;
		customArrayList.clear();
		Log.i(TAG, "callLogCursor.getCount()" + callLogCursor.getCount());
		if(0 < callLogCursor.getCount()){
			callLogCursor.moveToFirst();
			while (callLogCursor.getPosition() != callLogCursor.getCount()) {
				String number = callLogCursor.getString(callLogCursor
						.getColumnIndexOrThrow(CallLog.Calls.NUMBER));
				String name = callLogCursor.getString(callLogCursor
						.getColumnIndexOrThrow(CallLog.Calls.CACHED_NAME));
				if(null == name){
					ContactEntity contactentity = new ContactEntity();
					contactentity.contacts_display_name = number;
					contactentity.contacts_phone_number = number;
					customArrayList.add(contactentity);
				}
				callLogCursor.moveToNext();
			}
		}

		Log.i(TAG, "phoneCursor.getCount()" + phoneCursor.getCount());

		if(0 < phoneCursor.getCount()){
		phoneCursor.moveToFirst();
		// find all contact list
		while (phoneCursor.getPosition() != phoneCursor.getCount()) {
			ContactEntity contactentity = new ContactEntity();
			contactentity.contact_id = phoneCursor
					.getLong(phoneCursor
							.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID));
			contactentity.contacts_phone_type = phoneCursor
					.getInt(phoneCursor
							.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
			contactentity.contacts_phone_number = phoneCursor
					.getString(phoneCursor
							.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)).replace(
									"-", "");

			contactCursor = this.managedQuery(
					ContactsContract.Contacts.CONTENT_URI, null,
					ContactsContract.Contacts._ID + "="
							+ contactentity.contact_id, null, null);
			contactCursor.moveToFirst();
			contactentity.contacts_display_name = contactCursor
					.getString(contactCursor
							.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)).replace(
									"-", "");
//			contactentity.contact_photo_id = contactCursor.getInt(contactCursor
//					.getColumnIndex(ContactsContract.Contacts.PHOTO_ID));
//			if (0 != contactentity.contact_photo_id) {
//				Uri peopleURI = ContentUris.withAppendedId(People.CONTENT_URI,
//						new Long(contactentity.contact_photo_id));
//				contactentity.contact_phone_bmp = People.loadContactPhoto(this,
//						peopleURI, 0, null);
//			}

			Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI,
				            contactentity.contact_id);
			InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(getContentResolver(), uri);
			if(null != input){
			contactentity.contact_phone_bmp = BitmapFactory.decodeStream(input);
			}

			// spell name can
			contactentity.spellName = PinYin.getInstance(this).getPinyinString(
					contactentity.contacts_display_name);

			Log.i(TAG, "contactentity.contact_id: " + contactentity.contact_id
					+ " contactentity.contacts_phone_type: "
					+ contactentity.contacts_phone_type
					+ " contactentity.contacts_phone_number: "
					+ contactentity.contacts_phone_number
					+ "contactentity.contacts_display_name: "
					+ contactentity.contacts_display_name
					+ "contactentity.contact_phone_bmp: "
					+ contactentity.contact_phone_bmp);
			phoneCursor.moveToNext();

			customArrayList.add(contactentity);
		}
		}

		Collections.sort(customArrayList, new Comparator<ContactEntity>() {
			public int compare(ContactEntity o1, ContactEntity o2) {
				ContactEntity he1 = o1, he2 = o2;
				return he1.getName(ContactEntity.SPELL_NAME)
						.compareToIgnoreCase(
								he2.getName(ContactEntity.SPELL_NAME));
			}
		});

		if (null != phoneCursor|| null!= callLogCursor) {
			if (null != mAdapter) {
				mAdapter.list = customArrayList;
				mAdapter.notifyDataSetChanged();
			} else {
				mAdapter = new ContactAdapter(customArrayList);
				mContactList.setAdapter(mAdapter);
			}
			try {
				if(0 < phoneCursor.getCount()){
				phoneCursor.close();
				contactCursor.close();
				}
				if(0 < callLogCursor.getCount()){
				callLogCursor.close();
				}
			} catch (Exception e) {
				Log.e(TAG, e.getMessage());
				// ignore
			}
		}
	}
分享到:
评论
2 楼 lvjin948 2013-01-06  
非常高效地读手机联系人列表和分组 .
http://blog.csdn.net/lvjin110/article/details/8475080
1 楼 yzx503319102 2011-12-07  

相关推荐

    Android5.0 Contacts联系人源码

    Android 5.0引入了权限管理系统,联系人应用需要获取`READ_CONTACTS`和`WRITE_CONTACTS`权限才能读写联系人。同时,系统还支持与其他数据源(如Google账户)同步联系人。`SyncAdapter`负责定期执行同步任务,确保...

    Android 获取通讯录联系人信息源码

    例如,获取联系人姓名和电话号码: ```java while (cursor.moveToNext()) { String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); long contactId = cursor....

    Android 获取系统联系人并发送短信demo

    4. **遍历Cursor**:Cursor对象就像数据库查询的结果集,可以使用moveToFirst(), moveToNext()等方法遍历每一项联系人信息,获取如姓名、电话号码等字段。 5. **处理数据**:在遍历过程中,可以通过getString()方法...

    Android获取联系人列表Demo

    `DISPLAY_NAME`字段用于获取联系人姓名,`PHONE_NUMBER`字段用于获取电话号码。根据实际需求,你还可以添加更多字段,如电子邮件地址、生日等。 最后,我们将这些联系人信息显示在一个ListView或者其他UI组件上,...

    android 获取手机联系人

    在Android平台上,获取手机联系人是一项常见的功能,它允许应用访问设备上的通讯录信息,比如姓名、电话号码、电子邮件地址等。以下是一个关于如何在Android中实现这一功能的详细讲解。 首先,为了获取手机联系人,...

    Android4.1.1原版Contacts代码

    此外,联系人的数据通常存储在SQLite数据库中,如`data.db`,这包括姓名、电话号码、电子邮件等信息。 2. **Content Provider交互** `ContactsContract`是Android提供的一个接口,它定义了与Contacts Provider进行...

    Android获取联系人

    以下是对"Android获取联系人"这一主题的详细讲解。 首先,Android系统中的联系人数据存储在SQLite数据库中,开发者可以通过ContentProvider接口访问这些数据。ContactsContract类是Android提供的一个内容提供者...

    Contacts获取系统联系人

    在Android系统中,获取联系人信息是常见的功能之一,它涉及到Android权限管理、Content Provider、意图(Intent)以及UI设计等多个方面。以下是对"Contacts获取系统联系人"这一主题的详细阐述。 首先,为了访问用户的...

    查看并获取联系人电话

    在Android和iOS等移动操作系统中,查看和获取联系人电话是一项常见的功能,广泛应用于社交应用、通讯工具和其他需要用户授权访问联系人信息的软件中。本文将深入探讨如何在这些平台上实现这一功能。 首先,我们从...

    android 联系人 SIM卡 最近联系人 通讯录 获取源代码

    在Android开发中,获取联系人、SIM卡信息以及最近联系人列表是常见的需求。下面将详细解释这些概念和实现方式。 一、Android联系人管理 Android系统提供了ContentProvider接口来访问和操作联系人数据。主要涉及到...

    Android Studio 获取手机联系人项目main文件

    例如,获取联系人的姓名和电话号码: ```java while (cursor.moveToNext()) { String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); String ...

    Android 简单的获取联系人的信息

    在上述代码中,我们通过ContentResolver的query()方法进行查询,传入联系人的URI,null表示我们接受所有列,然后通过游标遍历结果,获取DISPLAY_NAME(联系人姓名)和NUMBER(电话号码)字段。注意,获取到的电话...

    Android Contacts之三自定义的联系人列表特效 b

    开发者可能通过遍历联系人姓名,根据首字母分组,并创建一个可点击的侧边栏(sidebar)来展示这些分组。当用户点击字母时,列表会跳转到对应首字母的联系人区域。 3. **关键字搜索**:搜索功能是联系人应用的核心之...

    android4.0联系人Contacts源代码

    在Android中,联系人的信息通常存储在SQLite数据库中,包括姓名、电话号码、电子邮件地址等。源代码中包含了数据库表的设计和SQL语句的实现,这对于理解如何高效地管理和查询联系人数据至关重要。 4. **数据模型**...

    Android4.1 Contacts源码

    每个联系人项是一个自定义的View,包含了姓名、电话号码、电子邮件等关键信息。点击联系人项会跳转到详情页面,展示更完整的联系人信息。源码中的Adapter类实现了数据与视图之间的绑定,使得数据变化能够实时反映到...

    android读取联系人信息,姓名,电话,头像

    2. **获取联系人姓名**: - 在查询时,确保包含`ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME`这一列,它代表联系人的显示名称。 - 遍历Cursor时,使用`cursor.getString(cursor.getColumnIndex...

    Android Contacts之三自定义的联系人列表特效 A

    我们需要为每个联系人创建一个自定义的View Holder,里面包含联系人的姓名、电话、头像等关键信息。自定义布局可以使用XML进行设计,确保视觉效果符合预期。 接下来,我们要处理数据源。联系人的数据通常存储在系统...

    android获取单个通讯录联系人信息并分享内容(短信邀请)

    总的来说,Android获取单个通讯录联系人信息并分享内容涉及了权限管理、ContentProvider的使用、Cursor操作以及短信服务的调用等多个知识点,理解并掌握这些内容对于Android开发者来说至关重要。

    contact-picker,用于Android的联系人选取器库,未经Read_Contacts许可,专为AndroidX设计.zip

    这些信息通常包括联系人的姓名、电话号码等。 四、安全与隐私 contact-picker库的一大亮点在于它的隐私保护策略。它不直接读取设备上的所有联系人数据,而是通过一个中间层来处理,这样可以避免实际获取和存储用户...

    Android 读取联系人信息

    在Android平台上,获取联系人信息是一项常见的功能,它允许应用程序访问用户的电话簿,展示联系人的姓名、电话号码、电子邮件地址等。本节将详细讲解如何在Android应用中读取联系人信息,以及与之相关的`firstname`...

Global site tag (gtag.js) - Google Analytics