安卓随机通话记录_Android 通话记录

查询通话记录

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 "未知";

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277588.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【c基础】入门语法

%d:占位符 表示要输出一个整形数。 %f:为float 浮点数 %lf:为double型 双精度浮点数 \n:换行 const:定义一个常量,一旦被初始化就不能修改,只读的变量(read-only variable)。 整数运算 的结果是整数 如果有小数就抛弃没有考虑四舍五入。 一&a…

vue的移动app项目中,自定义拖拽指令的问题

使用vue的都知道vue有一个自定义指令,我比较喜欢的就是拖拽的自定义指令,感觉挺方便的! //组件内的拖拽指令 directives: {//组建内自定义指令drag: {// 指令的定义bind: function(el, value) {let oDiv el; //当前元素let self this; //上…

弹窗php整人_[整人小程序] 超级信息框(无限弹窗++)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼貌似刚才缩进空格被吞了,再发一次Set FSO  createobject("scripting.filesystemobject")Set ws  Createobject("Wscript.shell")Set SA  CreateObject("Shell.Application")If …

day22 Java学习 IO流(序列流)

IO流(序列流) 序列流: * 可以把多个字节输入流整合成一个,从序列流中读取数据时,将从被整合的第一个流开始读,读完一个之后继续读第二个。 整合方式: * Seq uenceInputStream ( InputStream &am…

网站建设-简单动态网站搭建

通过前面Clouder课程的学习,或许你已经掌握了在云服务器上发布和部署静态网页的方法,那么如何搭建一个可以随时更新内容的动态网站?通过本课程的学习,你将掌握如何在云端搭建全世界使用最多的WordPress网站的方法,并学…

mysql的concat函数_MySQL中concat函数(连接字符串)

MySQL中concat函数使用方法:CONCAT(str1,str2,…)返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。注意:如果所有参数均为非二进制字符串,则结果为非二进制字符串。如果自变量中含有任一二进制字符串&…

利用airTest的图像实别技术测试Web应用

airTest的第三方类库中有图像实别功能,根据官网的介绍,这个功能是能够在Windows上用来定位元素,进行操作的。尝试过以下脚本,发现真的可以。 from selenium.webdriver.chrome.options import Options from selenium import webdri…

MySQL主从复制故障解决

丛库复制停止,进丛库查看,报错1007,数据库已存在,不能创建数据库 mysql> show slave status\G; Slave_IO_Running: Yes Slave_SQL_Running: No Last_Errno: 1007 Last_Error: Error Cant create database test; database exis…

Unraveling the JPEG file

(文章还剩实践部分没写,答辩过后补上...) JPEG文件在当下数字化生活中是无处不在的,但是在熟悉的JPEG面纱背后,隐藏着一些算法,它们去除了人类眼中无法察觉到的细节。这产生了最高的视觉质量与最小的文件大小。让我们来看看这一算…

mysql interval 3 day_Mysql之INTERVAL与DATE_SUB与EXTRACT函数的使用

1. INTERVALINTERVAL代表的是时间间隔MySQL中的时间间隔类型有如下几种:1.1 利用INTERVAL做时间的加减法示例:加法:SQL>SELECT DATE 2018-11-01 INTERVAL 10 11 DAY_HOUR;结果:2018-11-11 11:00:00减法:SQL> select date 2018-11-11 11:00:00 -INT…

(二十四)面向对象

class Car {int num;String name;String color;public static void run() {System.out.println("行驶中");} } //再类中定义的变量:成员变量 //在类中定义的函数:成员函数 class Demo1 {public static void main(String[] args) {//创建一个ca…

mysql 三主_MySQL主主复制3

一、创建并授权用户在每一台(主)服务器上创建一个用户,并为之授权,使它们可以互相访问彼此的数据库在Server-1上:创建一个充许Server-2来访问的用户server2,密码为:server2mysql> GRANT REPLICATION SLAVE ON *.*> TO ‘ser…

0727日志

为什么80%的码农都做不了架构师?>>> c端线上地址 http://x.diandanme.com/fe/?d183#/ 什么时候来需求,我做好准备了吗? eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC94LmRpYW5kYW5tZS5jb21cL2FwaVwvd2VjaGF0XC…

Python基础学习总结__Day3

一、集合 1.特性:无序且天生去重,格式为{} 2.作用: (1)去重 (2)关系测试 3.可调用函数(常见对列表操作) (1)取…

day8网络编程,面向对象1

一.只是回顾 1.导入模块的顺序,首先从当前目录下找,再从环境变量里面找,使用"sys.path.insert(0,需要导入的环境变量)"加入需要导入文件的环境变量; 2.如果不同项目中有相同的文件,需要导入文件,需要将非当前项目中右键添加的环境变量取消,将当前的环境变量添加上去;…

mysql练手数据_MySQL新手练习

操作插入数据 的语法 :INSERT INTO 表名称 VALUES(值1,值2,......);修改数据 的语法:UPDATE 表名称 SET 字段名1 值1, 字段名2值2,...... 【WHERE 条件】;删除数据 的语法:delete from 表名 【[where 条件】;delete 表1&#xff…

spring security config

spring secuirty 相关的配置解析 permitAll()与web.ignoring() ingore是完全绕过了spring security的所有filter,相当于不走spring securitypermitall没有绕过spring security,其中包含了登录的以及匿名的。转载于:https://www.cnblogs.com/MND1024/p/10…

TSPITR方式数据库找回误操作丢失的数据

一、TSPITR介绍 TSPITR全称是Tablespace Point In Time Recover(表空间基于时间点的不完全恢复)。原理是通过辅助实例基于时间还原出误操作前的数据通过DataPump将数据导入到目标数据库。TSPITR的最大好处是不需要生产库停机。 二、适用场景 表空间时点恢…

乌班图系统的MySQL_乌班图系统mysql主从备份

一.准备系统:ubuntu 14.04.2 LTSMysql: server version 5.5.43两台主机可以互相通信:192.168.1.11 master192.168.1.12 slave二.步骤Master部分:1.创建备份帐号:slave密码:slaveGrant repl…

mysql table alter_MySQL-ALTER TABLE命令学习[20180503]

学习ALTER TABLE删除、添加和修改字段和类型CREATE TABLE alter_tab01(id int,col01 char(20))enginInnoDB default charsetutf8;删除字段ALTER TABLE DROP ;mysql> alter table alter_tab01 dropcol01;Query OK, 0 rows affected (0.01sec)Records: 0 Duplicates: 0 Warnin…