// 获得所有的联系人 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通讯录管理(获取联系人、通话记录、短信消息),需要的打包带走
一个简单的使用Android Studio写的获取通讯录内容并且打电话发短信,如果安装完后APP闪退,请到设置中权限将相应的权限给他。
前阵子主要是记录了如何对联系人的一些操作,比如搜索,全选、反选和删除等在实际开发中可能需要实现的功能,本篇博客是小巫从一个别人开源的一个项目抽取出来的部分内容,把它给简化出来,可以让需要的朋友清楚知道...
Android 获取系统联系人并发送短信demo
安卓Android源码——获取手机通讯录的实战应用(含SIM卡中的联系人).rar
仿照一般手机通讯录的使用界面和功能,主要功能可包括: (1)可以添加、删减联系人 (2)联系人的信息包括:姓名、手机号码、工作单位、群组、电子邮件、手机铃声 (3)选择联系人后,可以快速进行操作,如:拨打...
实现从手机通讯录获取联系人,并用列表显示出来,用CheckBox附带多选功能,并返回所选联系人姓名和号码
Android Studio 获取手机联系人并进行,发短信,打电话,增删“改”操作
实现了获取通讯录联系人信息、短信内容、电话号码,增删短信,android中获取短信信息、通话记录和通讯录信息全部采用JUnit测试版
在应用开发中,我们经常会遇到短信邀请功能,把邀请内容通过短信的方式发给在通讯录中选择的联系人
Android通讯录管理(获取联系人、通话记录、短信消息.zip
Android获取手机联系人,发送短信
理解Content Uri的概念和作用,掌握通过Content Provider访问联系人的方法,掌握通过Content Provider访问通话记录的方法,掌握通过Content Provider访问短信的方法。
一个无良作者的内容加密而且没有教程,并且索要高额的费用,尽然这样,那就免费分享出来吧,有兴趣的可以自己研究一下链接:https://pan.baidu.com/s/1G-jsRqP7yli95sZC2mEbKQ 提取码:hw9s
选择多个联系人并发送短信,获取手机联系人,短信多方发送
获取联系人,短息 ,选择头像上传的通讯录
安卓Android苹果IOS双端多用途通讯录短信定位获取系统,hbiulderX打包出来的和原生APP一样 源码适用于:金融业务型公司(当你和客人达成资金担保合作协议,在抄录其50个备用联系人的时候,直接进行读取,省去了一...
Android通讯录,有获取联系人 通话记录 短信消息等功能。
Android Studio开发的个人特色通讯录,其中包含登陆、修改密码、发送邮件、拨打电话、发送短信、添加联系人,修改联系人、删除联系人、查询联系人、导入系统通讯录联系人,个人通讯录联系人导出到系统联系人、修改...
Android通讯录管理(获取联系人、通话记录、短信消息)采用异步框架查询