为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > [微信取消通讯录匹配]获取iPhone通讯录信息

[微信取消通讯录匹配]获取iPhone通讯录信息

2018-01-17 12页 doc 38KB 209阅读

用户头像

is_562397

暂无简介

举报
[微信取消通讯录匹配]获取iPhone通讯录信息[微信取消通讯录匹配]获取iPhone通讯录信息 [微信取消通讯录匹配]获取iPhone通讯录 信息 篇一 : 获取iPhone通讯录信息 iPhone中联系人的信息是存放在系统数据库中的。[)数据库 中的每一笔记录都是一个ABRecordRef实例。 通讯录主要存放两种记录: 1、联系人的信息:是ABPerson类型。主要包括联系人的姓名, 电话号码,地址信息。 2、分组信息:是ABGroup类型。用于将联系人分到不同的组 中。它只有一个属性,表示分组名称。 在viewDidLoad中添加下面代码,获取所有联系...
[微信取消通讯录匹配]获取iPhone通讯录信息
[微信取消通讯录匹配]获取iPhone通讯录信息 [微信取消通讯录匹配]获取iPhone通讯录 信息 篇一 : 获取iPhone通讯录信息 iPhone中联系人的信息是存放在系统数据库中的。[)数据库 中的每一笔记录都是一个ABRecordRef实例。 通讯录主要存放两种记录: 1、联系人的信息:是ABPerson类型。主要包括联系人的姓名, 电话号码,地址信息。 2、分组信息:是ABGroup类型。用于将联系人分到不同的组 中。它只有一个属性,示分组名称。 在viewDidLoad中添加下面代码,获取所有联系人和分组信 息: ABAddressBookRef addressBook =ABAddressBookCreate;CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople ;CFArrayRef allGroups = ABAddressBookCopyArrayOfAllGroups;for allPeople)[self logContact:person];for allGroups)[self logGroup:group];CFRelease;CFRelease;CFRelease; 使用ABAddressBookCreate创建一个AddressBook实例。 ABAddressBook CopyArrayOfAllPeople和ABAddressBook CopyArrayOfAllGroups查询出所有的联系人和分组信息。通过循环, 使用logPerson和logGroup两个方法将信息输出到控制台上。 logPerson方法: CFStringRef name = ABRecordCopyCompositeName; ABRecordID recId = ABRecordGetRecordID; NSLog; logGroup方法: CFStringRef name = ABRecordCopyValue; ABRecordID recId = ABRecordGetRecordID; NSLog; 前言:前阵子主要是记录了如何对联系人的一些操作,比如搜 索,全选、反选和删除等在实际开发中可能需要实现的功能,本篇博 客是小巫从一个别人开源的一个项目抽取出来的部分,把它给简 化出来,可以让需要的朋友清楚知道如何对Android数据库操作,异 步查询数据库获取我们需要的内 容。 { return contactId; } public void setContactId { this.contactId = contactId; } public String getDesplayName { return desplayName; } public void setDesplayName { this.desplayName = desplayName; } public String getPhoneNum { return phoneNum; } public void setPhoneNum { this.phoneNum = phoneNum; } public String getSortKey { return sortKey; } public void setSortKey { this.sortKey = sortKey; } public Long getPhotoId { return photoId; } public void setPhotoId { this.photoId = photoId; } public String getLookUpKey { return lookUpKey; } public void setLookUpKey { this.lookUpKey = lookUpKey; 扩 展:手机通讯录联系人恢复 / 微信通讯录删除联系人 / 微信通讯录 联系人消失 } public int getSelected { return selected; } public void setSelected { this.selected = selected; } public String getFormattedNumber { return formattedNumber; } public void setFormattedNumber { this.formattedNumber = formattedNumber; } public String getPinyin { return pinyin; } public void setPinyin { thi s.pinyin = pinyin; } } /Contact_Demo/src/com/suntek/contact/adapter/ContactListAdapter.java package com.suntek.contact.adapter; import java.io.InputStream; impo rt java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Set; import java.util.regex.Pattern; import android.content.ContentUris; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.provider.ContactsContract; import android.provider.ContactsContract.Contacts; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.QuickContactBadge; import android.widget.TextView; import com.suntek.contact.R; import com.suntek.contact.model.ContactBean; import com.suntek.contact.view.QuickAlphabeticBar; public class ContactListAdapter extends BaseAdapter { private LayoutInflater inflater; private List list; private HashMap alphaIndexer; // 字母索 引 private String[] sections; // 存储每个章 节 private Context ctx; // 上下 文 public ContactListAdapter { this.ctx = context; this.inflater = LayoutInflater.from; this.list = list; this.alphaIndexer = new HashMap; this.sections = new String[list.size]; for ; i++) { // 得到字母 扩展:手机通讯 录联系人恢复 / 微信通讯录删除联系人 / 微信通讯录联系人消失 String name = getAlpha.getSortKey); if ) { alphaIndexer.put; } } Set sectionLetters = alphaIndexer.keySet; ArrayList sectionList = new ArrayList; Collections.sort; // 根据首字母进行排 序 sections = new String[sectionList.size]; sectionList.toArray; alpha.setAlphaIndexer; } @Override public int getCount { return list.size; } @Override public Object getItem { return list.get; } @Override public long getItemId { return position; } public void remove { list.remove; } @Override public View getView { ViewHolder holder; if { convertView = inflater.inflate; holder = new ViewHolder; holder.quickContactBadge = convertView .findViewById; holder.alpha = convertView.findViewById; holder.name = convertView.findViewById; holder.number = convertView.findViewById; convertView.setTag; } else { holder = convertView.getTag; } ContactBean contact = list.get; String name = contact.getDesplayName; String number = contact.getPhoneNum; 扩展:手 机通讯录联系人恢复 / 微信通讯录删除联系人 / 微信通讯录联系人 消失 holder.name.setText; holder.number.setText; holder.quickContactBadge.assignContactUri, contact.getLookUpKey)); if ) { holder.quickContactBadge.setImageResource; } else { Uri uri = ContentUris.withAppendedId); InputStream input = ContactsContract.Contacts .openContactPhotoInputStream, uri); Bitmap contactPhoto = BitmapFactory.decodeStream; holder.quickContactBadge.setImageBitmap; } // 当前字 母 String currentStr = getAlpha); // 前面的字 母 String previewStr = >= 0 ? getAlpha.getSortKey) : ” ”; if ) { holder.alpha.setVisibility; holder.alpha.setText; } else { holder.alpha.setVisibility; } return convertView; } private static class ViewHolder { QuickContactBadge quickContactBadge; TextView alpha; TextView name; TextView number; } /** * 获取首字 母 * * @param str * @return */ private String getAlpha { if { return ”#”; } if .l ength == 0) { return ”#”; 扩展:手机通讯录联系人恢 复 / 微信通讯录删除联系人 / 微信通讯录联系人消失 } char c = str.trim.substring.charAt; // 正则 表达式匹 配 Pattern pattern = Pattern.compile; if .matches) { return .toUpperCase; // 将小写字母转换为大 写 } else { return ”#”; } } } /Contact_Demo/src/com/suntek/contact/ContactListActivity.java package com.suntek.contact; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.content.AsyncQueryHandler; import android.content.ContentResolver; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.provider.ContactsContract; import android.view.View; import android.widget.ListView; import com.suntek.contact.adapter.ContactListAdapter; import com.suntek.contact.model.ContactBean; import com.suntek.contact.view.QuickAlphabeticBar; /** * 联系人列 表 * * @author Administrator * */ public class ContactListActivity extends Activity { private ContactListAdapter adapter; private ListView contactList; private List list; private AsyncQueryHandler asyncQueryHandler; // 异步查询数据库类对 象 private QuickAlphabeticBar alphabeticBar; // 快速索引 条 private Map contactIdMap = null; @Override protected void onCreate { super.onCreate; setContentView; contactList = findViewById; alphabeticBar = findViewById; // 实例 化 asyncQueryHandler = new MyAsyncQueryHandler); init; } /** * 初始化数据库查询参 数 */ private void init { Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; // 联系人Uri; // 查 询的字 段 String[] projection = { ContactsContract.CommonDataKinds.Phone._ID, 扩展:手机通讯录联系人恢复 / 微信通讯录删除联 系人 / 微信通讯录联系人消失 ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.DATA1, ”sort_key”, ContactsContract.CommonDataKinds.Phone.CONTACT_ID, ContactsContract.CommonDataKinds.Phone.PHOTO_ID, ContactsContract.CommonDataKinds.Phone.LOOKUP_KEY }; // 按照sort_key升序查 詢 asyncQueryHandler.startQuery; } /** * * @author Administrator * */ private class MyAsyncQueryHandler extends AsyncQueryHandler { public MyAsyncQueryHandler { super; } @Override protected void onQueryComplete { if > 0) { contactIdMap = new HashMap; list = new ArrayList; cursor.moveToFirst; // 游标移动到第一 项 for ; i++) { cursor.moveToPosition; String name = cursor.getString; String number = cursor.getString; String sortKey = cursor.getString; int contactId = cursor.getInt; Long photoId = cursor.getLong; String lookUpKey = cursor.getString; if ) { // 无操作 扩展:手机通讯录联系人恢复 / 微信通讯录删除联系人 / 微信通讯录联系人消失 } else { // 创建联系人对 象 ContactBean contact = new ContactBean; contact.setDesplayName; contact.setPhoneNum; contact.setSortKey; contact.setPhotoId; contact.setLookUpKey; list.add; contactIdMap.put; } } if > 0) { setAdapter; } } super.onQueryComplete; } } private void setAdapter { adapter = new ContactListAdapter; contactList.setAdapter; alphabeticBar.init; alphabeticBar.setListView; alphabeticBar.setHight); alphabeticBar.setVisibility; } } 自定义组件: package com.suntek.contact.view; import android.content.Context; imp ort android.util.AttributeSet; import android.view.MotionEvent; import android.widget.LinearLayout; public class SlidingLinearLayout extends LinearLayout { public SlidingLinearLayout { super; } @Override public boolean onInterceptTouchEvent { return super.onInterceptTouchEvent; 扩展:手机通讯录联系 人恢复 / 微信通讯录删除联系人 / 微信通讯录联系人消失 } } /Contact_Demo/src/com/suntek/contact/view/QuickAlphabeticBar.java package com.suntek.contact.view; import java.util.HashMap; import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Typeface; import android.os.Handler; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.widget.ImageButton; import android.widget.ListView; import android.widget.TextView; import com.suntek.contact.R; /** * 字母索引 条 * * @author Administrator * */ public class QuickAlphabeticBar extends ImageButton { private TextView mDialogText; // 中间显示 字母的文本框 private Handler mHandler; // 处理UI的句 柄 private ListView mList; // 列表 private float mHight; // 高 度 // 字母列表索 引 private String[] letters = new String[] { ”#”, ”A”, ”B”, ”C”, ”D”, ”E”, “F”, ”G”, ”H”, ”I”, ”J”, ”K”, ”L”, ”M”, ”N”, ”O”, ”P”, ”Q”, ”R”, “S”, ”T”, ”U”, ”V”, ”W”, ”X”, ”Y”, ”Z” }; / / 字母索引哈希 表 private HashMap alphaIndexer; Paint paint = new Paint; boolean showBkg = false; int choose = -1; public QuickAlphabeticBar { super; } public QuickAlphabeticBar { super; } public QuickAlphabeticBar { super; } // 初始 化 public void init { mDialogText = ctx.findViewById; mDialogText.setVisibility; mHandler = new Handler; } // 设置需要索引的列 表 public void setListView { this.mList = mList; } // 设置字母索引哈希 表 public void setAlphaIndexer { 扩展:手机通讯录联系人恢 复 / 微信通讯录删除联系人 / 微信通讯录联系人消失 this.alphaIndexer = alphaIndexer; } // 设置字母索 引条的高 度 public void setHight { this.mHight = mHight; } @Override public boolean onTouchEvent { int act = event.getAction; float y = event.getY; final int oldChoose = choose; // 计算手指位置,找到对应的段,让mList移动段开 头的位置上 int selectIndex = ); if { // 防止越 界 String key = letters[selectIndex]; if ) { int pos = alphaIndexer.get; if > 0) { // 防止 ListView有标栏,本例中没 有 this.mList.setSelectionFromTop, 0); } else { this.mList.setSelectionFromTop; } mDialogText.setText; } } switch { case MotionEvent.ACTION_DOWN: showBkg = true; if { if { choose = selectIndex; invalidate; } } if { mHandler.post { @Override 扩展:手机通讯录联系人恢复 / 微信通 讯录删除联系人 / 微信通讯录联系人消失 public void run { if == View.INVISIBLE) { mDialogText.setVisibility; } } }); } break; case MotionEvent.ACTION_MOVE: if { if { choose = selectIndex; invalidate; } } break; case MotionEvent.ACTION_UP: showBkg = false; choose = -1; if { mHandler.post { @Override public void run { if == View.VISIBLE) { mDialogText.setVisibility; } } }); } break; default: 扩展:手机通讯录联系人恢复 / 微信通讯录删除联系人 / 微 信通讯录联系人消失 break; } return super.onTouchEvent; } @Override protected void onDraw { super.onDraw; int height = getHeight; int width = getWidth; int sigleHeight = height / letters.length; // 单个字母占的高 度 for { paint.setColor; paint.setTextSize; paint.setTypeface; paint.setAntiAlias; if { paint.setColor); // 滑动时按下字母颜 色 paint.setFakeBoldText; } // 绘画的位 置 float xPos = width / 2 - paint.measureText / 2; float yPos = sigleHeight * i + sigleHeight; canvas.drawText; paint.reset; } } } 扩展:手机通讯录联系人恢复 / 微信通讯录删除联系人 / 微 信通讯录联系人消失 上一篇文章:[怀念我永远的家鑫哥哥]永远的 十八岁小哥哥——纪念廖有梁前辈 下一篇文章:[形容有学问的成语]形容有学问的成语
/
本文档为【[微信取消通讯录匹配]获取iPhone通讯录信息】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索