包括联系人的添加、数量查询和获取系统联系人!

package cn.hnshangyu.cloudcommunication.utils;import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.provider.ContactsContract;import java.util.HashMap;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;/*** Created by Administrator on 2017/1/6.* 添加联系人到系统数据库*/public class AddressBookUtils {/*** 往数据库中新增联系人** @param mContext* @param name* @param phone*/public static void AddContact(Context mContext, String name, String phone) {//创建一个空的ContentValuesContentValues values = new ContentValues();//向ContactsContract.RawContacts.CONTENT_URI执行一个空值插入//目的是获取系统返回的rawContactId,以便添加联系人名字和电话使用同一个idUri rawContactUri = mContext.getContentResolver().insert(ContactsContract.RawContacts.CONTENT_URI, values);long rawContactId = ContentUris.parseId(rawContactUri);//清空values//设置id//设置内容类型//设置联系人姓名values.clear();values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);values.put(ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);values.put(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, name);//向联系人URI添加联系人姓名mContext.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);//清空values//设置id//设置内容类型//设置联系人电话//设置电话类型values.clear();values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, phone);values.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE);mContext.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);}/*** 得到数据库数量信息*/public static String getContactsDataNum(Context mContext) {//使用ContentResolver查找联系人数据Cursor cursor = mContext.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);int count = cursor.getCount();//使用完毕关闭Cursorcursor.close();return String.valueOf(count);}/*** 得到数据库信息*/public static List<HashMap> getContactsData(Context mContext) {//使用ContentResolver查找联系人数据Cursor cursor = mContext.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);CopyOnWriteArrayList<HashMap> mListItems = new CopyOnWriteArrayList<>();//便利查询结果,获取系统中的所有人while (cursor.moveToNext()) {//获取联系人idString contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));LogUtils.i("huangxiaoguo", contactId);/*** 获取联系人姓名*/String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));LogUtils.i("huangxiaoguo", name);//使用过ContentResolver通过id查找联系人的电话//此处为了方便显示,只取联系人的第一个号码(可能有多个号码)Cursor phones = mContext.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + contactId, null, null);phones.moveToNext();/*** 联系人的电话*/String phone = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));LogUtils.i("huangxiaoguo", phone);//使用完毕关闭Cursorphones.close();//创建Map添加到mListItems中用于创建SimpleAdapterHashMap<String, String> listItem = new HashMap<String, String>();listItem.put("name", name);listItem.put("phone", phone);mListItems.add(listItem);}//使用完毕关闭Cursorcursor.close();return mListItems;}
}

使用ContentResolver操作手机系统联系人相关推荐

  1. Android初级教程获取手机系统联系人信息

    在手机内部,对联系人信息存在对应的数据库.我们创建的而联系人信息都存在这张表中.如下是对数据库的截图,我已经对表和应该注意的地方做了红笔标注: 好了,现在可以根据数据库里面的数据来写代码了. 代码如下 ...

  2. 工程模式下操作手机系统

    按"音量下+电源"进入工程模式(Meta mode),连接USB数据线,启动ADB: C:\adb>adb shell <取得管理员权限> $ su su < ...

  3. 添加几个手机联系人_One UI 3.0: 更细腻、更好用,这才是手机系统该有的样子

    作为全球出货量最多的 Android 手机厂商,三星宣布将于北京时间 1 月 14 日正式召开 2021 年度的新品发布会.伴随着 S21 的即将发售,我想借此机会和大家一起来聊一聊前不久刚刚推送正式 ...

  4. 对Android手机系统日历数据增删改查操作详解

    Android手机系统日历数据增删改查详解 前段时间需要开发提取手机系统的日历数据的功能,自己开始研究了一下,刚开始还是比较懵逼的,经过仔细研究还是能够完全贯通了. 如果不想细细研究,可以直接下载我的 ...

  5. android手机电话号码,Android开发:实现添加系统联系人(手机号码,姓名)

    之前遇到了一些知识没有总结的习惯,今天来回顾一下一个简单的小功能:Android开发中调起系统的联系人列表. 在网上收到了好多这方面的知识,自己在写代码的时候总结了一个最简化的方法,希望可以给大家提供 ...

  6. appium 如何模拟手机系统操作按键

    appium 如何模拟手机系统操作按键 如何使用 电话键 控制键 组合键 基本 哈喽,大家好!我是大O小众 今天和大家分享的是关于appium 如何模拟手机系统操作按键 如何使用 # 在括号内添加值 ...

  7. 无法进入系统的三星Android手机恢复联系人、短信数据并重置手机的过程

    领导的一台双卡双待的Samsung Grand DUOS(i9082)联通合约手机前一阵子突然坏了,按开机键之后,显示Woo和三星商标,喊一句"欢迎进入Woo的世界",就开始在Wo ...

  8. 如何用计算机装手机系统,如何通过一键操作手机重新安装计算机系统?

    随着科学技术的发展,手机的功能越来越强大,聊天视频娱乐无疑是大势所趋. 但是与计算机相比,仍然缺少火源. 有些朋友想用手机重新安装计算机系统. 接下来自己怎么安装手机系统,我将教您如何使用一键式电话重 ...

  9. android恢复联系人,如何从Android手机恢复联系人[最佳方式]

    有没有简单的方法 从Android设备恢复已删除/丢失的联系人? 各种原因将导致Android手机上的数据丢失. 例如,意外删除可能会导致电话号码丢失,而一些错误的操作也可能导致联系人丢失. 此外,技 ...

最新文章

  1. IT工作者,你们的爱情是这样的吗?
  2. android 动画引擎,一个使用openGL渲染的炫丽Android动画库
  3. ASP.NET MVC学习之路由篇(2)
  4. S5PV210之Sate210-F DIY硬件,移植uboot,kernel,android 活动现在已经进入实施阶段吗,欢迎广大网友参与 !...
  5. 2.5 隐藏委托关系
  6. 基于wemos D1的无线遥控灯(433m无线模块)
  7. 不使用物理引擎,自己动手做真实物理的模拟投篮游戏
  8. sublime 3143 注册码
  9. Linux Shell 操作命令 ls
  10. 今晚8点不见不散!余承东Vlog如此夸赞华为Mate30系列新机
  11. 清除工程目录下多余文件和文件夹
  12. 我怎样学会英语的--钟道隆逆向英语学习法1
  13. 江苏计算机二级报名一年几次,江苏计算机二级每年考几次
  14. highcharts中gantt甘特图的使用
  15. cloudera/quickstart
  16. 利用幂级数性质解级数求和问题
  17. 配置activiti控制台打印SQL
  18. 高德地图轨迹回放、点的弹跳效果、浏览器环境监测、设置地图的主题样式、GPS坐标转为高德坐标、地图加载提示、地图DOM事件、修改图层等API接口
  19. 老毛桃制作装机版u盘
  20. 工作中如何时间管理?

热门文章

  1. C语言实现鼠标连点器
  2. 【论文阅读】4- 4-Points Congruent Sets for Robust Pairwise Surface Registration
  3. 进大专好还是去北大青鸟这类培训机构好呢?
  4. i9-9980HK和i9-9880H 哪个好
  5. 贵金属白银实时走势图——解读要领
  6. (转)申请企业级IDP、真机调试、游戏接入GameCenter 指南、游戏接入OpenFeint指南;...
  7. python数据分析复盘——爬虫相关库
  8. python列表嵌套合并成一个列表
  9. 用手机搭建博客并部署到gitee
  10. 小虎电商浏览器:拼多多打单如何批量重打快递单