// 获得所有的联系人 Cursor cur = getContentResolver().query( ContactsContract.Contacts.CONTENT_URI, null, null, null, ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"); // 循环遍历 if (cur.moveToFirst()) { int idColumn = cur.getColumnIndex(ContactsContract.Contacts._ID); int displayNameColumn = cur .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME); do { // 获得联系人的ID号 String contactId = cur.getString(idColumn); // 获得联系人姓名 String disPlayName = cur.getString(displayNameColumn); // 查看该联系人有多少个电话号码。如果没有这返回值为0 int phoneCount = cur .getInt(cur .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); Log.i("username", disPlayName); sb.append(disPlayName).append(":"); if (phoneCount > 0) { // 获得联系人的电话号码 Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId, null, null); if (phones.moveToFirst()) { do { // 遍历所有的电话号码 String phoneNumber = phones .getString(phones .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); String phoneType = phones .getString(phones .getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE)); Log.i("phoneNumber", phoneNumber); Log.i("phoneType", phoneType); sb.append(phoneNumber).append(","); } while (phones.moveToNext()); } } // 获取该联系人邮箱 Cursor emails = getContentResolver().query( ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId, null, null); if (emails.moveToFirst()) { do { // 遍历所有的电话号码 String emailType = emails .getString(emails .getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE)); String emailValue = emails .getString(emails .getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); Log.i("emailType", emailType); Log.i("emailValue", emailValue); } while (emails.moveToNext()); } // 获取该联系人IM Cursor IMs = getContentResolver().query( Data.CONTENT_URI, new String[] { Data._ID, Im.PROTOCOL, Im.DATA }, Data.CONTACT_ID + "=?" + " AND " + Data.MIMETYPE + "='" + Im.CONTENT_ITEM_TYPE + "'", new String[] { contactId }, null); if (IMs.moveToFirst()) { do { String protocol = IMs.getString(IMs .getColumnIndex(Im.PROTOCOL)); String date = IMs .getString(IMs.getColumnIndex(Im.DATA)); Log.i("protocol", protocol); Log.i("date", date); } while (IMs.moveToNext()); } // 获取该联系人地址 Cursor address = getContentResolver() .query(ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId, null, null); if (address.moveToFirst()) { do { // 遍历所有的地址 String street = address .getString(address .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET)); String city = address .getString(address .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY)); String region = address .getString(address .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.REGION)); String postCode = address .getString(address .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE)); String formatAddress = address .getString(address .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS)); Log.i("street", street); Log.i("city", city); Log.i("region", region); Log.i("postCode", postCode); Log.i("formatAddress", formatAddress); } while (address.moveToNext()); } // 获取该联系人组织 Cursor organizations = getContentResolver().query( Data.CONTENT_URI, new String[] { Data._ID, Organization.COMPANY, Organization.TITLE }, Data.CONTACT_ID + "=?" + " AND " + Data.MIMETYPE + "='" + Organization.CONTENT_ITEM_TYPE + "'", new String[] { contactId }, null); if (organizations.moveToFirst()) { do { String company = organizations.getString(organizations .getColumnIndex(Organization.COMPANY)); String title = organizations.getString(organizations .getColumnIndex(Organization.TITLE)); Log.i("company", company); Log.i("title", title); } while (organizations.moveToNext()); } // 获取备注信息 Cursor notes = getContentResolver().query( Data.CONTENT_URI, new String[] { Data._ID, Note.NOTE }, Data.CONTACT_ID + "=?" + " AND " + Data.MIMETYPE + "='" + Note.CONTENT_ITEM_TYPE + "'", new String[] { contactId }, null); if (notes.moveToFirst()) { do { String noteinfo = notes.getString(notes .getColumnIndex(Note.NOTE)); Log.i("noteinfo", noteinfo); } while (notes.moveToNext()); } // 获取nickname信息 Cursor nicknames = getContentResolver().query( Data.CONTENT_URI, new String[] { Data._ID, Nickname.NAME }, Data.CONTACT_ID + "=?" + " AND " + Data.MIMETYPE + "='" + Nickname.CONTENT_ITEM_TYPE + "'", new String[] { contactId }, null); if (nicknames.moveToFirst()) { do { String nickname_ = nicknames.getString(nicknames .getColumnIndex(Nickname.NAME)); Log.i("nickname_", nickname_); } while (nicknames.moveToNext()); } } while (cur.moveToNext()); }
源码下载地址 : http://www.itbbu.com/?p=400
相关推荐
这篇教程将深入探讨如何在Android应用中获取联系人信息、通话记录以及短信消息。首先,我们来了解一下基本概念。 1. **获取联系人信息**: Android提供了一套完整的API来访问和操作联系人数据。主要涉及`...
以上就是如何在Android Studio中获取通讯录姓名和手机号,以及实现打电话和发送短信的基本步骤。在实际开发中,还需要考虑权限处理的用户体验,比如提供合理的提示信息,并处理权限未被授予的情况。同时,针对不同...
在Android平台上,获取系统联系人和发送短信是两个常见的功能,常常被用于开发社交或通讯类应用程序。这个“Android 获取系统联系人并发送短信demo”应该是提供了一个示例代码,帮助开发者理解如何实现这两个功能。...
在Android开发中,获取联系人、SIM卡信息以及最近联系人列表是常见的需求。下面将详细解释这些概念和实现方式。 一、Android联系人管理 Android系统提供了ContentProvider接口来访问和操作联系人数据。主要涉及到...
本实战应用主要涵盖了如何通过Android源码获取手机通讯录,包括SIM卡中的联系人信息。接下来,我们将详细讨论这个主题。 首先,我们要知道在Android中访问通讯录主要涉及`ContactsContract`类,它是Android系统提供...
前阵子主要是记录了如何对联系人的一些操作,比如搜索,全选、反选和删除等在实际开发中可能需要实现的功能,本篇博客是小巫从一个别人开源的一个项目抽取出来的部分内容,把它给简化出来,可以让需要的朋友清楚知道...
这里的`CONTENT_URI`指向了联系人的数据,`DISPLAY_NAME`和`NUMBER`是获取联系人名称和电话号码的字段。`cursor`遍历每一项联系人信息,打印出来供开发者分析。 在Android Studio中,我们通常会创建一个Adapter来...
在Android开发中,获取手机通讯录并实现联系人选择功能是一项常见的需求,尤其在构建具有社交元素的应用时。本文将详细解析如何通过源码实现这一功能,包括从手机通讯录读取联系人信息、列表展示、多选机制以及返回...
总的来说,Android获取单个通讯录联系人信息并分享内容涉及了权限管理、ContentProvider的使用、Cursor操作以及短信服务的调用等多个知识点,理解并掌握这些内容对于Android开发者来说至关重要。
在Android平台上,获取通讯录是常见的功能之一,用于实现联系人管理、社交应用等功能。这份"Android 获取通讯录程序源码.zip"包含了实现这一功能的完整源代码,可以帮助开发者深入理解如何在Android系统中访问和操作...
在Android开发中,获取短信信息、通话记录以及通讯录数据是常见的需求,这些功能对于构建一个功能完善的手机应用至关重要。本项目实现了一个JUnit测试版本,专门针对这些功能进行单元测试,确保代码的稳定性和可靠性...
联系人信息应包括姓名、手机号码、工作单位、群组、电子邮件、手机铃声等。设计时要考虑提供快速操作,如拨打电话、发送短信、查看详细信息、移出群组、移动分组和删除联系人。 2. **查询功能**:通过搜索栏输入...
在这个项目中,我们将深入探讨如何在Android Studio中获取手机联系人,并执行发送短信、拨打电话以及对联系人进行增删改的操作。 首先,我们需要在AndroidManifest.xml文件中添加必要的权限声明,这是进行任何涉及...
在Android操作系统中,手机通讯录是一个至关重要的功能,它不仅为用户提供联系人存储、查找和管理的便捷方式,还与其他应用程序和服务紧密集成。这篇“android手机通讯录的毕业论文”可能涉及以下几个关键知识点: ...
在移动应用开发中,"获取通讯录发送短信"是一个常见的功能需求,主要涉及到用户的联系人数据访问和系统短信服务的接口调用。本篇将详细阐述这两个关键知识点。 首先,我们要了解如何在Android系统中获取通讯录数据...
我们可以通过ContentResolver来查询这个ContentProvider,获取短信的相关信息,包括发件人电话号码和短信内容。 1. **使用ContentResolver和Uri查询短信**: 使用ContentResolver的query()方法可以查询短信数据库...
2. **系统功能设计**:具体包括联系人的增删查改、拨打电话、发送短信和电子邮件等功能。 3. **系统数据库设计**:采用SQLite数据库来存储联系人信息,支持高效的数据读写。 #### 五、具体功能实现 1. **界面布局*...
在这个项目中,SQLite用于持久化保存联系人的信息,包括姓名、电话号码、头像和备注。开发者需要创建数据库表结构,定义字段,以及编写SQL语句进行数据的增、删、查、改操作。此外,Android提供了SQLiteOpenHelper类...
开发者需要获取到相应的读取权限(`READ_CONTACTS`),然后通过ContentResolver查询`ContactsContract.Contacts`表来获取联系人信息,包括姓名、电话号码等。同时,如果需要获取更详细的信息,如邮箱地址,可以...