.java
package test.mft; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import android.app.Activity; import android.app.TabActivity; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.os.Bundle; import android.provider.CallLog; import android.util.Log; import android.widget.TabHost; public class TestActivity extends Activity { /** Called when the activity is first created. */ ArrayList<String> outgoingList = new ArrayList<String>(); ArrayList<String> incomingList = new ArrayList<String>(); ArrayList<String> missedcallList = new ArrayList<String>(); @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.main); readCallLogs(); } private void readCallLogs() { missedcallList.clear(); incomingList.clear(); outgoingList.clear(); /*Query Call Log Content Provider*/ Cursor callLogCursor = getContentResolver().query(android.provider.CallLog.Calls.CONTENT_URI, null, null, null, android.provider.CallLog.Calls.DEFAULT_SORT_ORDER); /*Check if cursor is not null*/ if (callLogCursor != null) { /*Loop through the cursor*/ while (callLogCursor.moveToNext()) { /*Get ID of call*/ String id = callLogCursor.getString(callLogCursor.getColumnIndex(CallLog.Calls._ID)); /*Get Contact Name*/ String name = callLogCursor.getString(callLogCursor.getColumnIndex(CallLog.Calls.CACHED_NAME)); /*Get Contact Cache Number*/ String cacheNumber = callLogCursor.getString(callLogCursor.getColumnIndex(CallLog.Calls.CACHED_NUMBER_LABEL)); /*Get Contact Number*/ String number = callLogCursor.getString(callLogCursor.getColumnIndex(CallLog.Calls.NUMBER)); /*Get Date and time information*/ long dateTimeMillis = callLogCursor.getLong(callLogCursor.getColumnIndex(CallLog.Calls.DATE)); long durationMillis = callLogCursor.getLong(callLogCursor.getColumnIndex(CallLog.Calls.DURATION)); /*Get Call Type*/ int callType = callLogCursor.getInt(callLogCursor.getColumnIndex(CallLog.Calls.TYPE)); String duration = durationMillis+""; //通话时间长度(秒) //时间戳转换 SimpleDateFormat format = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ); String dateString = format.format(dateTimeMillis);// dateTimeMillis = 1365514019004; 通话时间(什么时候通话的) if (cacheNumber == null) cacheNumber = number; if (name == null) name = "No Name"; /*Create Model Object*/ //CallLogModel callLogModel = new CallLogModel(name, cacheNumber, duration, dateString); String callLogString = "{name='"+name+"',cacheNumber='"+cacheNumber+"',duration='"+duration+"',dateString='"+dateString+"'}"; /*Add it into respective ArrayList*/ if (callType == CallLog.Calls.OUTGOING_TYPE) { outgoingList.add(callLogString); } else if (callType == CallLog.Calls.INCOMING_TYPE) { incomingList.add(callLogString); } else if (callType == CallLog.Calls.MISSED_TYPE) { missedcallList.add(callLogString); } } /*Close the cursor*/ callLogCursor.close(); } Log.d("log1", "outgoingList:"+outgoingList); Log.d("log1", "incomingList:"+incomingList); Log.d("log1", "missedcallList:"+missedcallList); } }
加权限
<uses-permission android:name="android.permission.READ_CONTACTS" > </uses-permission>
<uses-permission android:name="android.permission.READ_CALL_LOG"></uses-permission>
<uses-permission android:name="android.permission.WRITE_CALL_LOG"></uses-permission>
相关推荐
首先,要读取通话记录,我们需要使用`android.provider.CallLog`这个内容提供者。`CallLog.Calls`表存储了所有通话信息,如ID、号码、联系人名、通话类型(如打入、打出、未接)以及通话时长和日期。通过...
【Android项目通话记录源代码详解】 在Android平台上,通话记录是手机系统中不可或缺的一部分,它允许用户查看、管理他们的通话历史,包括未接电话、已接电话和已拨电话。这个"android项目通话记录源代码"正是针对...
Android系统维护了一个名为`CallLog`的内置SQLite数据库,存储了所有的通话记录。获取通话记录主要是通过ContentResolver和ContentProvider进行操作。ContentResolver是Android提供的用于与ContentProvider交互的...
在Android系统中,通话记录是用户通信历史的重要组成部分,提供了对过去拨打、接听和错过电话的记录。要操作这些通话记录,开发者需要了解Android的ContentProvider机制以及相关的权限管理。以下将详细介绍如何在...
在Android操作系统中,电话拨打和通话记录(call/calllog)是系统的核心功能之一,它涉及到许多组件和接口的交互。下面将详细解释这个过程,包括拨打电话的流程、通话记录的保存以及与系统服务的通信。 首先,当...
在通话记录应用中,你需要声明访问电话状态和呼叫日志的权限,例如`<uses-permission android:name="android.permission.READ_CALL_LOG"/>`和`<uses-permission android:name="android.permission.WRITE_CALL_LOG"/>...
在Android系统中,通话记录是...总结来说,Android的通话记录操作主要依赖`CallLog`类和`ContentResolver`,通过声明相应权限,查询和删除通话记录变得简单。在实际开发中,要确保遵循用户隐私政策,合理使用这些功能。
这篇教程将深入探讨如何在Android应用中获取联系人信息、通话记录以及短信消息。首先,我们来了解一下基本概念。 1. **获取联系人信息**: Android提供了一套完整的API来访问和操作联系人数据。主要涉及`...
### Android获取通话记录知识点详解 #### 一、概述 在Android开发中,有时我们需要访问设备上的通话记录,例如实现拨号记录查询的功能。这通常涉及到对Android系统内部数据的访问和处理。根据提供的代码片段来看,...
- 在Android中,通话记录是由系统的`CallLog` ContentProvider管理的。要查询通话记录,需要使用`CallLog.Calls.CONTENT_URI`,这是一个常量,表示通话记录的URI。 3. **查询操作**: - 使用ContentResolver的`...
在Android平台上,获取短信和通话记录信息是开发者常用于实现各种功能,如日志记录、安全监控或备份应用的关键操作。下面将详细讲解如何在Android系统中获取这些数据。 一、获取短信信息 1. 权限声明: 首先,为了...
Android提供了`CallLog`类来访问和操作通话记录。主要涉及到以下几个关键的类和方法: - **`CallLog.Calls`**:这是一个内部类,提供了与通话记录相关的常量。 - **`CallLog.Calls.CONTENT_URI`**:代表了通话记录的...
通话记录功能涉及的API主要位于Android框架层,包括TelephonyManager、CallLog类和ContentProvider等。TelephonyManager提供与电话服务交互的方法,如获取设备的IMEI、SIM状态等。CallLog类则用于访问通话历史记录,...
短信则通过`SmsProvider`来管理,而通话记录则由`CallLog` Content Provider负责。自Android 4.4(KitKat)版本开始,出于安全考虑,插入短信的权限变得更加严格,一般的应用程序无法直接写入短信数据库,除非具有`...
在Android中,通话记录是存储在`CallLog`表中的,可以通过ContentProvider来访问。ContentResolver是与ContentProvider交互的接口,我们通常使用`ContentResolver.query()`方法来查询通话记录。主要涉及以下步骤: ...
在Android系统中,SMS(短消息服务)和CallLog(通话记录)是两个重要的功能模块,它们的数据存储在系统的SQLite数据库中。SQLite是Android设备上默认的轻量级数据库,用于应用程序存储结构化数据。本篇文章将深入...
android中calllog简介,以及做contacts时遇到的几个问题。
在Android平台上,开发人员可以利用Android提供的API来操作和管理设备上的联系人、通话记录以及短信记录。这个项目"Android之插入联系人+通话记录+短信记录"显然旨在实现自动化处理这些数据,使得应用程序能够自动...
在Android开发中,获取真机通话记录是一项常见的需求,主要用于数据分析、日志记录或特定功能的实现。这个“真机获取安卓通话记录”的项目演示了如何在真实的Android设备上获取通话记录信息。在模拟器上进行测试时,...