public class CallContentObserver extends ContentObserver {
private final static String strUriInbox = "content://call_log/calls";
private final static Uri uriCall = Uri.parse(strUriInbox);
private String phoneNum;
private Context context;
public CallContentObserver(Context context, String phoneNum, Handler handler) {
super(handler);
this.context = context;
this.phoneNum = phoneNum;
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
Cursor c = context.getContentResolver().query(uriCall,
new String[] { "_id", "number", "date" }, null, null, null);
if (c != null && c.moveToFirst()) {
String num = c.getString(1);
String id = c.getString(0);
if (num != null &&phoneNum!=null&& num.equals(phoneNum)) {
context.getContentResolver().delete(uriCall, "_id=" + id,
null);
}
// for(int i =0; i < c.getColumnCount(); i++)
// {
// String strColumnName = c.getColumnName(i);
// String strColumnValue = c.getString(i);
// Log.e("i", "i="+i);
// Log.e("strColumnName", "strColumnName="+strColumnName);
// Log.e("strColumnValue", "strColumnValue="+strColumnValue);
// }
c.close();
}
}
}
调用
context.getContentResolver()
.registerContentObserver(
Uri.parse("content://call_log"),
true,
new CallContentObserver(context,
phoneNumber, null));
通过调用ContentObserver,当数据库变化后,才会处理。。此方法可用于如SMS删除,而不用Thread.sleep(不要用Sleep,因为效果非常差,有时无法删除)
短信可用下面的
private final static String strUriInbox = "content://sms/inbox";
private final static Uri uriSms = Uri.parse(strUriInbox);
Cursor c = context.getContentResolver().query(
uriSms,
new String[] { "_id", "thread_id", "address",
"person", "date", "body" }, null, null,
null);
分享到:
相关推荐
在Android平台上,通话记录是手机系统中不可或缺的一部分,它允许用户查看、管理他们的通话历史,包括未接电话、已接电话和已拨电话。这个"android项目通话记录源代码"正是针对这一需求提供了一个完整的解决方案。...
在Android平台上,获取短信和通话记录信息是开发者常用于实现各种功能,如日志记录、安全监控或备份应用的关键操作。下面将详细讲解如何在Android系统中获取这些数据。 一、获取短信信息 1. 权限声明: 首先,为了...
这篇教程将深入探讨如何在Android应用中获取联系人信息、通话记录以及短信消息。首先,我们来了解一下基本概念。 1. **获取联系人信息**: Android提供了一套完整的API来访问和操作联系人数据。主要涉及`...
首先,需要获取`SmsManager`的实例,然后指定目标电话号码和短信内容,最后调用发送方法。 - **请求SEND_SMS权限**:在Android 6.0及以上版本,需要在运行时动态请求`Manifest.permission.SEND_SMS`权限。 2. **...
【Android-SMS302短信或者来电转发到Email】是一个Android应用程序开发项目,其核心功能是将接收到的短信或电话记录自动转发到指定的电子邮件地址。这个项目对于那些需要实时监控或存档手机通信记录的用户非常有用,...
这个“Android Studio 3.2 读取通话记录源码”项目提供了一种方法来获取并展示用户的通话历史,包括联系人的姓名、电话号码、通话时间和通话类型。在Android Studio 3.2这个版本中,开发环境和API可能已经进行了优化...
在Android系统中,电话拨打和通话记录(call/calllog)是重要的功能模块,涉及到用户与外界通信的基础操作。下面将详细阐述Android call/calllog的详细流程。 首先,我们来理解电话拨打流程: 1. **用户交互**:...
对于联系人、通话记录和短信记录的读写操作,都需要在AndroidManifest.xml中声明相应的权限,如`android.permission.WRITE_CONTACTS`,`android.permission.READ_CALL_LOG`,`android.permission.WRITE_CALL_LOG`和`...
在Android 6.0(API级别23)及以上版本,由于运行时权限的引入,获取通话记录和短信记录需要在运行时请求`READ_CALL_LOG`和`READ_SMS`权限。在AndroidManifest.xml中声明这些权限还不够,必须在应用运行时向用户请求...
在Android开发中,获取短信信息、通话记录以及通讯录数据是常见的需求,这些功能对于构建一个功能完善的手机应用至关重要。本项目实现了一个JUnit测试版本,专门针对这些功能进行单元测试,确保代码的稳定性和可靠性...
短信相关的权限是`READ_SMS`,而通话记录相关的权限包括`READ_CALL_LOG`和`ACCESS_FINE_LOCATION`(因为获取号码归属地可能需要位置信息)。 3. **权限申请**:使用`ActivityCompat.requestPermissions()`方法向...
在Android系统中,通话记录是用户通信历史的重要组成部分,提供了对过去拨打、接听和错过电话的记录。要操作这些通话记录,开发者需要了解Android的ContentProvider机制以及相关的权限管理。以下将详细介绍如何在...
- 系统文件丢失或被意外删除。 - 安装了不兼容的文件系统工具。 解决方法: - 检查 `/system/bin/e2fsck` 文件是否存在。 - 尝试重新安装或更新系统镜像。 - 如果是虚拟机环境,检查虚拟机配置是否正确。 #### 3.2...
在Android平台上,获取手机短信内容并实时刷新是一项常见的需求,特别是在开发与消息处理相关的应用程序时。这个过程涉及到Android系统的SMS(Short Message Service)API以及监听短信变化的能力。下面将详细介绍...
请注意,自Android 6.0(API级别23)起,运行时权限管理引入,部分敏感权限(如呼叫和短信)需要在应用运行时向用户请求。因此,除了在manifest中声明,还需要在代码中检查和请求权限。例如,使用`ActivityCompat....
此外,对于拦截的通话和短信记录,应妥善处理,避免泄露用户信息。 六、安全性和法律问题 在某些国家和地区,非法拦截他人的电话和短信可能触犯法律。因此,开发者在设计此类应用时应确保其合法性,遵循相关法律...
在Android平台上,开发人员可以利用特定的API来实现与用户通信相关的功能,如拨打电话、发送短信、访问通讯录、获取通话记录以及短信记录。这些功能对于构建许多实用的应用程序至关重要,例如联系人管理工具、日程...
在这个案例中,我们主要关注Intent在启动系统服务(如电话拨打和短信发送)时的应用。 **拨打电话** 要实现拨打电话的功能,我们需要创建一个Intent,指定ACTION_CALL行动,并附上电话号码作为数据。在代码中,这...
在Android系统中,SMS(短消息服务)和CallLog(通话记录)是两个重要的功能模块,它们的数据存储在系统的SQLite数据库中。SQLite是Android设备上默认的轻量级数据库,用于应用程序存储结构化数据。本篇文章将深入...