Android开发获取联系人信息&根据姓名查找电话%根据电话查找姓名
来源:互联网 发布:python 循环读取csv 编辑:程序博客网 时间:2024/05/01 00:36
最近使用到联系人查找的功能并直接拨号,查看自己之前写的代码,感觉着实麻烦。还是觉得整理成博客比较好,于是就整理了一下。
一,获取全部联系人并装到集合中
①联系人工具类
/** * 获取联系人信息 */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(); 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; }
0 0
- Android开发获取联系人信息&根据姓名查找电话%根据电话查找姓名
- 手机联系人信息获取(头像,电话,姓名)
- android:获取联系人信息(姓名和电话)
- android获取手机联系人信息(电话,邮箱,姓名,头像)
- 根据电话号码查找通讯录中联系人姓名
- Android获取联系人姓名和电话
- Android获取手机联系人姓名电话
- android 根据电话模糊查询姓名
- 获取联系人姓名和电话
- 获取手机联系人姓名,电话
- 【Android】利用AutoCompleteTextView控件联系人自动补全与根据联系人姓名查询电话
- Android读取联系人姓名、电话
- Android中 根据电话号码获取联系人姓名
- 根据电话号码获取联系人姓名
- android 2.x 根据姓名查找通讯录
- android示例之取得联系人的信息(姓名、电话)
- android:获取联系人原理(姓名和电话)详解
- Android 在自己的Activity中获取系统中联系人的姓名,电话等信息 .
- C语言实验——打印数字图形
- 数据结构与算法____时间复杂度和空间复杂度
- 移植自动交互工具expect5.45到arm linux(tcl8.6.3移植)
- dropload.js下拉加载应用
- vs2010里面 新建网站里面的 asp.net网站 和 新建项目里面的 asp.net Web应用程序 的区别
- Android开发获取联系人信息&根据姓名查找电话%根据电话查找姓名
- 一个直播例子:快速集成iOS基于RTMP的视频推流
- ssm项目中使用mybatis配置连表查询
- ID3算法
- C# .NET内置委托
- 哈希是什么?为什么哈希存取比较快?
- Mysql中的排序规则utf8_unicode_ci、utf8_general_ci的区别总结
- 执行应用程序出现: No such file or directory
- iOS异常捕获-堆栈信息的解析