Android笔记——对系统通话记录的删除操作
手机通话记录是保存在数据库中的,位置: /data/data/com.android.providers.contacts/databases/calllog.db ,表名:calls
这张表中有个type字段,属性值为常量值:
- 来电:CallLog.Calls.INCOMING_TYPE (常量值:1)
- 已拨:CallLog.Calls.OUTGOING_TYPE(常量值:2)
- 未接:CallLog.Calls.MISSED_TYPE(常量值:3)
这是最常见的,number字段表示电话号码,还有些其他字段就不一一说明了
添加权限
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CALL_LOG" />
前两个权限是读/写联系人的权限,最后一个是写通话记录的权限,这个权限我之前并没有加上,但是在操作通话记录时,Android Studio推荐加上这个权限,否则就会划红线,但是并不影响程序运行
编写代码
系统通过ContentProvider (内容提供器)向外共享。
Uri
CallLog.Calls.CONTENT_URI 等价于:Uri.parse("content://call_log/calls"); 用哪个都可以
获取内容解析器
ContentResolver resolver = getContentResolver();
getContentResolver()方法是Content类的方法
操作内容解析器
其实操作和操作Sqlite的方法几乎一样,比如说删除操作:
resolver.delete(CallLog.Calls.CONTENT_URI, "number=?", new String[]{number});
会删除给定的号码的所有记录,还可以增加个条件(如 type=1),删除给定的号码的来电记录
查询某个联系人的所有通话记录可以使用(query方法)
resolver.query(CallLog.Calls.CONTENT_URI, null, "number=?", new String[]{number}, null);
虽然删除了电话号码记录,但是可能会有延迟,所以我们查询电话号码表是否改变了
在MainActivity中增加一个类继承ContentObserver 用来观察电话号码表是否改变,如果发生变化,则再次删除该号码
/**
* ContentObserver 上下文观察者
*/
class CallLogObserver extends ContentObserver {
private String number; public CallLogObserver(String number, Handler handler) {
super(handler);
this.number = number;
} /**
* 如果通话记录发生改变
*
* @param selfChange
*/
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
deleteCallLog(number);
}
}
别忘了调用这个类,通过getContentResolver()获得解析器,再调用registerContentObserver方法,注意最后一个变量给的就是编写的CallLogObserver类
getContentResolver().registerContentObserver(CallLog.Calls.CONTENT_URI, true, new CallLogObserver(incomingNumber, new Handler()));
Android笔记——对系统通话记录的删除操作的更多相关文章
- 【笔记】AJAX+SweetAlert插件实现删除操作
[笔记]AJAX+SweetAlert插件实现删除操作 Django AJAX SweetAlert 展示 SweetAlert 插件介绍 SweetAlert 是一个 JS 插件,能够完美替代 J ...
- MongoDB快速入门学习笔记6 MongoDB的文档删除操作
db.集合名称.remove({query}, justOne)query:过滤条件,可选justOne:是否只删除查询到的第一条数据,值为true或者1时,只删除一条数据,默认为false,可选. ...
- Android 4.3 系统裁剪——删除不使用的app及添加自己app
删除不使用的apk 系统自带的app位置是在/android4.3/packages/apps 以下是一些APP作用分析: | |– BasicSmsReceiver | |– Bluetooth ( ...
- Android群英传笔记——第一章:Android体系与系统架构
Android群英传笔记--第一章:Android体系与系统架构 图片都是摘抄自网络 今天确实挺忙的,不过把第一章的笔记做一下还是可以的,嘿嘿 1.1 Google的生态圈 还是得从Android的起 ...
- android 获取通话记录
在manifest添加以下权限<uses-permission android:name="android.permission.READ_CALL_LOG" />&l ...
- Android通讯录管理(获取联系人、通话记录、短信消息)
前言:前阵子主要是记录了如何对联系人的一些操作,比如搜索,全选.反选和删除等在实际开发中可能需要实现的功能,本篇博客是小巫从一个别人开源的一个项目抽取出来的部分内容,把它给简化出来,可以让需要的朋友清 ...
- 【Android】Android6.0读取通话记录
需求:读取通话记录,然后列表显示,每条记录的数据包括姓名.号码.类型(来电.去电.未接,字体颜色分别为绿.蓝.红),然后长按条目弹出一个列表弹窗,显示[复制号码到拨号盘].[发短信].[打电话]. 先 ...
- Android笔记之 文件保存、压缩与清空删除
这两天改进优化项目中图片上传的代码.考虑到可能有7.8M的比較大的图片,由于要先进行压缩.所以设计到文件的压缩,保存与清空删除操作. 在这里记下笔记. /** * 压缩并另存为,每次先清空再保存 */ ...
- Dynamics 365检查工作流、SDK插件步骤是否选中运行成功后自动删除系统作业记录
本人微信公众号:微软动态CRM专家罗勇 ,回复298或者20190120可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 系统 ...
随机推荐
- 使用jQuery操作DOM(2)
1.获取设置属性值 attr({属性名1:属性值1,属性名2:属性值2}); //设置属性值 removeAttr(“属性名”); //删除属性 注意:如果元素没有此属性,会不起作用 2.获取同辈元素 ...
- TF随笔-11
#!/usr/bin/env python2 # -*- coding: utf-8 -*- import tensorflow as tf my_var=tf.Variable(0.) step=t ...
- 使用json path设置关联
与正则表达式相比,这种方法会更简单一些: json path是在返回的是K-V的格式中根据key进行的关联,如果压的接口返回的是json的话,使用json path比较方便,如果不是json的话,就使 ...
- Ubuntu终端远程连接linux服务器
SSH是一个远程接入软件,可以让你想坐在计算机前面一样操作计算机.SSH使用加密方式传输数据,是一种非常安全的工作方式 步骤如下: 前提:如果没有安装ssh的话请 sudo apt-get inst ...
- 20179223《Linux内核原理与解析》第六周学习笔记
视频知识学习 给MenuOS增加time和time-asm命令 1.更新menu代码到最新版 2.再main()函数中增加MenuConfig 3.增加对应的Time函数和TimeAsm函数(这里的函 ...
- 解决大于 4GB 的 Windows 10 镜像在 UEFI 模式下的安装问题
制作一个 Windows 安装 U 盘是很容易的,使用 UltraISO 这样的刻录工具量产一个 iso 镜像文件到 U 盘即可.然而随着 Windows 10 版本号的提升,镜像变得越来越大,终于 ...
- HDFS原理分析之HA机制:avatarnode原理
一.问题描述 由于namenode 是HDFS的大脑,而这个大脑又是单点,如果大脑出现故障,则整个分布式存储系统就瘫痪了.HA(High Available)机制就是用来解决这样一个问题的.碰到这么个 ...
- 《DSP using MATLAB》示例Example 9.5
代码: %% ------------------------------------------------------------------------ %% Output Info about ...
- codechef Far Graphs
codechef Far Graphs https://www.codechef.com/problems/TBGRAPH 题意 : 给一个简单无向图,要求构造一个序列\(a\),长度为\(n\),极 ...
- ORACLE11g 没有控制文件如何通过rman备份恢复数据的详细实战过程
1.副总裁需要裸恢复的严峻现实 集团总部的信息部负责人给我打电话说为了找一年前的记录,所以需要对一年前2015年5月1日的数据进行恢复.而2016年初因为进行迁移,所以有些文件可能丢失,手上只有rma ...