查询通话记录

private static final String[] CALLLOGS_PROJECTION = new String[]{CallLog.Calls._ID,

CallLog.Calls.CACHED_NAME, CallLog.Calls.NUMBER, CallLog.Calls.TYPE, CallLog.Calls.DATE,

CallLog.Calls.DURATION};

/**

*

* 概述:获取最近10条通话记录

*/

public ArrayList getCallLogs() {

mCallLogBeans.clear();

ContentResolver resolver = mContext.getContentResolver();

// 获取手机联系人

@SuppressLint("MissingPermission")

Cursor phoneCursor = resolver.query(CallLog.Calls.CONTENT_URI,

CALLLOGS_PROJECTION, null, null, "date DESC");

if (phoneCursor != null) {

while (phoneCursor.moveToNext()) {

// 得到手机号码

String phoneNumber = phoneCursor.getString(PHONES_NUMBER_INDEX);

// 当手机号码为空的或者为空字段 跳过当前循环

if (TextUtils.isEmpty(phoneNumber))

continue;

// 得到联系人名称,通过数据库查询的方式有的手机有问题,通话记录不会缓存联系人姓名(中兴天机7),只能去查通讯录对应的人名

String contactName = phoneCursor.getString(PHONES_DISPLAY_NAME_INDEX);

if (TextUtils.isEmpty(contactName)) {

contactName = getPhoneTrueName(phoneNumber);

}

if (TextUtils.isEmpty(contactName)) continue;

PersonBean bean = new PersonBean();

bean._id = phoneCursor.getLong(phoneCursor.getColumnIndex(CallLog.Calls._ID));

bean.name = contactName;

bean.phoneNum = phoneNumber.replace(" ", "").replace("+86", "");

bean.date = phoneCursor.getLong(phoneCursor.getColumnIndex(CallLog.Calls.DATE));

bean.duration = phoneCursor.getString(phoneCursor.getColumnIndex(CallLog.Calls.DURATION));

bean.type = phoneCursor.getInt(phoneCursor.getColumnIndex(CallLog.Calls.TYPE));

bean.pinyinName = Pinyin.toPinyin(bean.name, "");

LogUtils.instance().d(TAG, "PersonBean [" +bean.toString()+"]");

boolean isContained = false;

for (PersonBean bean2 : mCallLogBeans) {

if (bean2.phoneNum.equals(bean.phoneNum)) {

isContained = true;

break;

}

}

if (!isContained) {//如果没有这个号码则加入数组

mCallLogBeans.add(bean);

if (mCallLogBeans.size() > 8) {

break;

}

}

}

phoneCursor.close();

}

return mCallLogBeans;

}

秒数转时长

public static long[] secondNum2Time(String timeStr) {

long[] longs = new long[]{0,0,0};

if (TextUtils.isEmpty(timeStr)) return longs;

long time = Long.parseLong(timeStr);

long hour = time / 3600;

long minute = time / 60 % 60;

long second = time % 60;

longs[0] = hour;

longs[1] = minute;

longs[2] = second;

return longs;

}

通话记录的type

public String getTypeStr() {

if (CallLog.Calls.INCOMING_TYPE == type) {

return "来电";

} else if (CallLog.Calls.OUTGOING_TYPE == type) {

return "去电";

}else if (CallLog.Calls.MISSED_TYPE == type) {

return "未接";

}else if (CallLog.Calls.VOICEMAIL_TYPE == type) {

return "语音邮件";

}else if (CallLog.Calls.REJECTED_TYPE == type) {

return "拒绝";

}else if (CallLog.Calls.BLOCKED_TYPE == type) {

return "阻止";

} else {

return "未知";

}

}

安卓随机通话记录_Android 通话记录相关推荐

  1. 三星平板 N8000刷机升级安卓版本到7.1过程记录

    三星平板N8000刷机升级安卓版本到7.1过程记录 三星n8010系统升级 三星n8010系统升级 手里的GT-N8000出厂原装系统是4.1.2的,很多现在的APP安装时都会出现"安装包解 ...

  2. uniapp 安卓APP应用宝整改问题记录

    uniapp 安卓APP应用宝整改问题记录 1.官方整改建议 应用宝官方指导 接到应用宝邮件,说未经同意,获取了信息,内容如下: 首页是这样的: 2.uniapp官方方案 uniapp官方方案 看指导 ...

  3. DNS安全浅议、域名A记录(ANAME),MX记录,CNAME记录 专题

    首先要做的就是配置域名的MX 记录啦: 先添加一条A记录: mail.abc.com 指向 你的服务器IP! 然后添加域名的MX 记录,指向mail.abc.com A 记录( 即域名MX 记录的值为 ...

  4. TouchEn nxKey:键盘记录反键盘记录解决方案

    TouchEn nxKey:键盘记录反键盘记录解决方案 本文译自:TouchEn nxKey: The keylogging anti-keylogger solution 我一周前写过关于韩国的强制 ...

  5. 什么是A记录、MX记录、CNAME记录

     什么是A记录? A (Address) 记录是用来指定主机名(或域名)对应的IP地址记录.用户可以将该域名下的网站服务器指向到自己的web server上.同时也可以设置域名的子域名. 通俗来说A记 ...

  6. 域名”A记录,MX记录,CNAME记录,TTL值,URL转发”解释

    域名"A记录,MX记录,CNAME记录,TTL值,URL转发"解释 大家在注册和使用域名的时候都有下面对域名所有的记录存在过疑问罢? 什么是A记录?什么是MX记录?CNAME记录又 ...

  7. 数据库的主键ID设置为自动增加,删除记录后的记录还是递增的,如何重新从1开始增加呢?

    操作 数据库数据 删除了7和8之后添加了一条新数据 问题 删除记录后的记录还是递增的,如何重新从1开始增加呢? 解决 truncate table 表名; 注意 此语句会把表中数据清空

  8. 批量添加DNS的A记录和PTR记录

    批量添加DNS的A记录和PTR记录 搞SQL Server集群难免要搞域控制器,搞域控制器就不得不提DNS服务器,但DNS不只是为域服务,还可以作为ESX服务器所需的DNS服务器来复用,于是涉及到如何 ...

  9. DNS A记录和CNAME记录

    参考文章:http://blog.xieyc.com/differences-between-a-record-and-cname-record/ A (Address) 记录是用来指定主机名(或域名 ...

最新文章

  1. 基于耳-脑电图的脑机接口研究进展
  2. 探秘Java中String、StringBuilder以及StringBuffer
  3. 推荐TensorFlow2.0的样例代码下载
  4. python中intersection用法_Python Set intersection() 方法
  5. 使用shell脚本 控制 python挂掉后自动重启
  6. python列表输出字符串,如何在python中输出utf-8字符串列表?
  7. 【读书笔记】segment routing mpls数据平面-2
  8. JDK API文档中文版(1.6、1.8、1.9)(附百度网盘下载地址)
  9. 怎样把doc转换成jpg
  10. endnote找不到国标_实验差距惊人!揭秘雅迪高于新国标的品质标准测试
  11. mysql float数据类型和decimal数据类型
  12. Oracle触发器转写成瀚高触发器
  13. 简易图解N合1集成安装光盘制作教程
  14. JScript服务器运行,jscript模拟的“控制台”程序Web服务器教程
  15. 维度诅咒_维度的诅咒减去行话的诅咒
  16. 叉乘点乘混合运算公式_职测解题技巧:数学运算的35个基础公式
  17. 第七章 在51单片机上移植uc/os-2
  18. 最新天迹云通信短信分销系统源码+已修复完美版
  19. 知了 | 基于NLP的智能问答推荐系统
  20. docker镜像批量导入、导出

热门文章

  1. 霸榜Github第一!谷歌重磅开源的“海啸”,我服了
  2. FTP协议及工作原理
  3. ASP.NET MVC ActionFilter自定义过滤器异常过滤器过滤器用法
  4. 超融合和服务器关系_超融合与传统服务器区别
  5. es查询大文本效率_es之路由:进一步提高Elasticsearch的检索效率(适用大规模数据集)...
  6. python 系统学习实例1.1 - 华氏度与摄氏度的转换
  7. 一名运营,自学一年前端,成功入职杭州某独角兽企业,他的面试经验和学习方法等分享...
  8. 2019.5.8_此书真乃宝书也_从定位参数到仅限关键字参数
  9. 17、【 商品管理模块开发】——后台商品图片的springmvc和富文本上传以及ftp文件服务器的开发...
  10. 没有暑假的Ada 要好好努力咯 C#继续