android获得手机的时间格式,Android获取手机通讯录并按照时间电话类型分类处理...
本文用到的RecyclerView标题悬浮,参考连接
先看看图片详情:
device-2017-01-08-113015.png
device-2017-01-08-113047.png
获取通讯录之后按照时间.类型分类,同一号码同一类型在当天只出现一次
因为考虑到还有悬停的问题,RecyclerView学习(四)----城市导航列表的实现(上)中的思想是:获取对象名字的拼音然后排序,他这样做是为了侧边索引。因为本文并不需要用到索引,所以并不需要获取拼音,只获取每个通话的时间yyyy-MM-dd,通过比较时间(eques),这样就可以根据悬浮的原理来实现日期分类
一直有个疑问:Java为什么会有eques,感觉跟牵强啊
我实现分类的思想是:因为我查询通话记录是按照时间顺序来的。
/**
* 获取所有的通话记录
*
* @param context
*/
public void getCallLog(Context context) {
try {
callInfoLogs.clear();
ContentResolver cr = context.getContentResolver();
Uri uri = CallLog.Calls.CONTENT_URI;
String[] projection = new String[]{CallLog.Calls.NUMBER, CallLog.Calls.DATE,
CallLog.Calls.TYPE, CallLog.Calls.CACHED_NAME, CallLog.Calls.DURATION, CallLog.Calls.GEOCODED_LOCATION};
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CALL_LOG) != PackageManager.PERMISSION_GRANTED) {
}
Cursor cursor = cr.query(uri, projection, null, null, CallLog.Calls.DATE + " DESC");
while (cursor.moveToNext()) {
CallInfoLog callInfoLog = new CallInfoLog();
String number = cursor.getString(0);//电话号码
long date = cursor.getLong(1);//通话时间
int type = cursor.getInt(2);//通话类型
String name = cursor.getString(3);//名字
String duration = cursor.getString(4);//通话时长
String areaCode = cursor.getString(5);//归属地
String callTime = TransitionTime.convertTimeFirstStyle(date);//格式化时间yyyy-MM-dd
if (TransitionTime.getTodayData().equals(callTime)) {//如果是今天的话
callInfoLog.setCallTime("今天");
} else if (TransitionTime.getYesData().equals(callTime)) {
callInfoLog.setCallTime("昨天");
} else {
callInfoLog.setCallTime(callTime);
}
callInfoLog.setNumber(number);
callInfoLog.setDate(date);
callInfoLog.setType(type);
callInfoLog.setName(name);
callInfoLog.setCountType(1);
callInfoLog.setDuration(duration);
callInfoLog.setCode(areaCode);
//筛选数据
if (TextUtils.isEmpty(number)) {
callInfoLogs.add(callInfoLog);
continue;
}
boolean isadd = screenData(callInfoLogs, callInfoLog);
if (isadd) {
callInfoLogs.add(callInfoLog);
}
}
cursor.close();
callLogAdapter.notifyDataSetChanged();
} catch (Exception e) {
e.printStackTrace();
}
}
顺便说下:
查看电话记录---CallLog.Calls.CONTENT_URI
CallLog.Calls.CACHED_NAME查询的联系人名字
CallLog.Calls.TYPE电话类型,
CallLog.Calls.NUMBER电话号码
CallLog.Calls.DATE电话日期
(注意:CallLog.Calls.TYPE电话类型的取值 来电:1,拨出:2,未接:3)
查询出来的数据按照:cursor.moveToNext() 时都是按照最新的先获取,所以数据筛选时都要和之前的数据对比,如果是同一号码同一类型同一天的话就不在放入集合中,而是给已经存在的最新的数量上+1。
/**
* 筛选数据
* @param callInfoLogs
* @param info
* @return
*/
private boolean screenData(ArrayList callInfoLogs, CallInfoLog info) {
if (callInfoLogs.size() > 0) {
for (int i = 0; i < callInfoLogs.size(); i++) {
CallInfoLog callInfoLog = callInfoLogs.get(i);
//如果说是日期和类型全部一样的话那么这个通话记录就不要,变成一个数量归为最近一次记录里面
if (callInfoLog.getCallTime().equals(info.getCallTime()) && callInfoLog.getType() == info.getType() && info.getNumber().equals(callInfoLog.getNumber())) {
callInfoLog.setCountType(callInfoLog.getCountType() + 1);//递增一次
//结束这次数据查找
return false;
}
}
}
return true;
}
以上就是重要的两部分
源码地址
android获得手机的时间格式,Android获取手机通讯录并按照时间电话类型分类处理...相关推荐
- Android项目:手机安全卫士(15)—— 获取手机安装应用与存储空间
Android项目:手机安全卫士(15)-- 获取手机安装应用与存储空间 1 介绍 今天来讲讲手机安全卫士的第三个功能:软件管理,其实也不应该叫管理,称为软件应用信息查看更正确一点,就是显示手机已安装 ...
- 时间格式处理获取本年份的起止时间
文章目录 1.ios兼容性问题 2.倒计时函数 3.获取当前年份起止时间 4.时间格式转换 1.ios兼容性问题 对于时间格式 ios不能识别横杠 获取本年份的起止时间 `/***``\* 得到本年的 ...
- python秒数转化为时间格式_python将秒数转化为时间格式的实例
python将秒数转化为时间格式的实例 1.转化成时间格式 seconds =35400 m, s = divmod(seconds, 60) h, m = divmod(m, 60) print(& ...
- android获取时区时间格式,Android关于获取日期时间知识点整理
项目开发过程中,获取时间日期以及一些转换呢,老忘记来着,总得花时间去查找资料,于是乎,现在终于要来整理整理下这方面的知识点了,用于巩固自己的记忆! 时间戳(timestamp) 指格林威治时间1970 ...
- h5获取android手机版本,Vue.js怎么获取手机系统型号、版本、浏览器类型
Vue.js怎么获取手机系统型号.版本.浏览器类型 发布时间:2020-07-28 11:22:33 来源:亿速云 阅读:161 作者:小猪 这篇文章主要为大家展示了Vue.js怎么获取手机系统型号. ...
- android通话记录手机号码归属地,mui 获取手机通话记录
export default { onLoad() { this.log(); // this.msg(); // this.concat(); }, methods: { log() { // 获取 ...
- Android开发 亲测可用--多种方式获取手机短信验证码自动填入
Android开发 静态注册.动态注册.短信中心库监控获取手机验证码,自动复制到剪切板或或填入输入框. 友情提醒初学者:这是广播接收器的类,写在xml中静态注册或写在启动类的Oncreate方法下动态 ...
- android gps时间格式,android – GPS:NTP时间注入的工作原理
我最近知道一个gps.conf文件在/ system / etc /目录. 似乎将NTP_SERVER值调整到更接近通常位置的NTP服务器改善了TTFF. 读取LocationProvider类中的源 ...
- [获取手机信息]-通过 ADB 命令获取手机信息
################################################## 目录 通过 ADB 命令获取手机信息 ADB 常用查看命令 使用 -l 查看设备详细信息 查看机型 ...
最新文章
- SoapUI:mock service的简单使用
- 计算机应用能力 中文字处理,全国职称计算机应用能力考试《Word 2003中文字处理》考试大纲...
- Python基础06-Python异常处理
- ASP.NET Web实时消息后台服务器推送技术---GoEasy
- 点击底部input输入框,弹出的软键盘挡住input(苹果手机使用第三方输入法 )
- java 数据结构_Java版-数据结构-队列(数组队列)
- MongoDB分布式集群分片
- SpringBoot异常处理机制之自定义404、500错误提示页面
- centos7平台手动搭建snort入侵检测系统
- SpringBoot项目:抽奖精灵
- 视频课程:CMOS模拟集成电路版图设计
- ip地址和域名的关系是什么?
- A*算法中二叉堆的使用
- Unity2D游戏制作常用方法
- Unreal Engine4和Unity3D对比
- Win10下如何找到下载的主题壁纸,并提取图片
- 阿轩的复习笔记-主从库数据一致性
- 2021计算机一级新增知识点,2021年全国计算机等级考试改革有哪些内容
- 5年多工作经验,工资给15k,要是你,你会接受吗?
- revi怎么弄插件能够使附件发生一定角度的旋转?