Android开发获取联系人信息&根据姓名查找电话%根据电话查找姓名
2017-02-22 16:40
501 查看
最近使用到联系人查找的功能并直接拨号,查看自己之前写的代码,感觉着实麻烦。还是觉得整理成博客比较好,于是就整理了一下。
一,获取全部联系人并装到集合中
①联系人工具类
/** * 获取联系人信息 */ public class ContactsEngine { /** * 获取系统的联系人信息 */ public static List<ContactsInfo> getAllContacts(Context context){ List<ContactsInfo> list = new ArrayList<ContactsInfo>(); //获取内容解析者 ContentResolver contentResolver = context.getContentResolver(); Uriuri=ContactsContract.CommonDataKinds.Phone.CONTENT_URI; String[] projection = new String[]{ ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.CONTACT_ID }; Cursor cursor = contentResolver.query(uri, projection, null, null, null); //解析cursor获取数据 while(cursor.moveToNext()){ String name = cursor.getString(0); String number = cursor.getString(1); int contactId = cursor.getInt(2); ContactsInfo contactsInfo = new ContactsInfo(name, number, contactId); list.add(contactsInfo); } return list; } /** * 根据联系人的id,获取联系人的头像 */ public static Bitmap getContactPhoto(Context context,int contactid){ ContentResolver contentResolver = context.getContentResolver(); Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_URI, contactid+""); //获取联系人的头像,以流的形式返回 InputStream inputStream = ContactsContract.Contacts.openContactPhotoInputStream(contentResolver, uri); //将流转化成bitmap Bitmap bitmap = BitmapFactory.decodeStream(inputStream); //关流 if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return bitmap; }
②联系人信息Javabean
/** * 联系人的bean * */ public class ContactsInfo { public String name; public String number; public int id; public ContactsInfo(String name, String number, int id) { super(); b968 this.name = name; this.number = number; this.id = id; } }
二,根据联系人查找电话号码直接拨打号码
/** *根据名字拨打电话 */ public void nameNumberCall(String name) { Cursor cursor = mContext.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); while (cursor.moveToNext()) { String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); String contactName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); if (name.equals(contactName)) { Cursor phone = mContext.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId, null, null); if (phone.moveToNext()) { String phoneNumber = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); Intent intentPhone = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNumber)); if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { mContext.startActivity(intentPhone); return; } break; } }else { //TODO 根据姓名没有查找到联系人给用户做一个友好提示 } } }
根据电话查找联系人
/** * 根据电话查找姓名 */ public String numberToName(String num) { Intent intentPhone = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + num)); mView.setIntent(intentPhone); String displayName = null; Cursor cursor = null; try { ContentResolver resolver = mContext.getContentResolver(); Uri uri = ContactsContract.PhoneLookup.CONTENT_FILTER_URI.buildUpon().appendPath(num).build(); String[] projection = new String[]{COLUMN_ID, COLUMN_DISPLAY_NAME}; cursor = resolver.query(uri, projection, null, null, null); if (cursor != null && cursor.moveToFirst()) { int columnIndexName = cursor.getColumnIndex(COLUMN_DISPLAY_NAME); displayName = cursor.getString(columnIndexName); } } catch (Exception e) { e.printStackTrace(); } finally { if (cursor != null) { cursor.close(); } } return displayName; }
相关文章推荐
- 用c语言实现一个通讯录; 通讯录可以存储1000个人的信息,信息包括姓名、性别、年龄、电话、住址 提供方法: 1.添加联系人信息 2.删除指定联系人信息 3.查找指定联系人信息 4.修改指定联系&
- android:获取联系人信息(姓名和电话)
- android:获取联系人信息(姓名和电话)
- android获取手机联系人信息(电话,邮箱,姓名,头像)
- android:获取联系人信息(姓名和电话)
- Android 在自己的Activity中获取系统中联系人的姓名,电话等信息 .
- Android获取联系人姓名和电话代码
- Android应用开发揭秘-获取电话联系人及号码
- Android获取联系人信息[名字,手机,电话,公司名称,昵称]
- Android获取手机联系人姓名电话
- Android软件开发之获取通讯录联系人信息 + android联系人信息的存储结构 + Android联系人读取操作笔记
- Android软件开发之获取通讯录联系人信息(二十九)
- Android软件开发之获取通讯录联系人信息(二十九)
- iOS开发之获取手机通讯录联系人信息<一>
- Android软件开发之获取通讯录联系人信息 + android联系人信息的存储结构 + Android联系人读取操作笔记
- Android软件开发之获取通讯录联系人信息
- android:获取联系人原理(姓名和电话)详解
- Android软件开发之获取通讯录联系人信息
- Android软件开发之获取通讯录联系人信息
- Android软件开发之获取通讯录联系人信息