`

android > CallLog 通话记录

 
阅读更多

.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 Studio 3.2 读取通话记录源码

    首先,要读取通话记录,我们需要使用`android.provider.CallLog`这个内容提供者。`CallLog.Calls`表存储了所有通话信息,如ID、号码、联系人名、通话类型(如打入、打出、未接)以及通话时长和日期。通过...

    android项目通话记录源代码

    【Android项目通话记录源代码详解】 在Android平台上,通话记录是手机系统中不可或缺的一部分,它允许用户查看、管理他们的通话历史,包括未接电话、已接电话和已拨电话。这个"android项目通话记录源代码"正是针对...

    AndroidCallLog获取通话记录

    Android系统维护了一个名为`CallLog`的内置SQLite数据库,存储了所有的通话记录。获取通话记录主要是通过ContentResolver和ContentProvider进行操作。ContentResolver是Android提供的用于与ContentProvider交互的...

    Android操作通话记录

    在Android系统中,通话记录是用户通信历史的重要组成部分,提供了对过去拨打、接听和错过电话的记录。要操作这些通话记录,开发者需要了解Android的ContentProvider机制以及相关的权限管理。以下将详细介绍如何在...

    Android call/calllog 详细流程图

    在Android操作系统中,电话拨打和通话记录(call/calllog)是系统的核心功能之一,它涉及到许多组件和接口的交互。下面将详细解释这个过程,包括拨打电话的流程、通话记录的保存以及与系统服务的通信。 首先,当...

    Android应用源码之通话记录源码-IT计算机-毕业设计.zip

    在通话记录应用中,你需要声明访问电话状态和呼叫日志的权限,例如`&lt;uses-permission android:name="android.permission.READ_CALL_LOG"/&gt;`和`&lt;uses-permission android:name="android.permission.WRITE_CALL_LOG"/&gt;...

    android通话记录的查询与删除

    在Android系统中,通话记录是...总结来说,Android的通话记录操作主要依赖`CallLog`类和`ContentResolver`,通过声明相应权限,查询和删除通话记录变得简单。在实际开发中,要确保遵循用户隐私政策,合理使用这些功能。

    Android通讯录管理(获取联系人、通话记录、短信消息)

    这篇教程将深入探讨如何在Android应用中获取联系人信息、通话记录以及短信消息。首先,我们来了解一下基本概念。 1. **获取联系人信息**: Android提供了一套完整的API来访问和操作联系人数据。主要涉及`...

    android 获得通话记录

    ### Android获取通话记录知识点详解 #### 一、概述 在Android开发中,有时我们需要访问设备上的通话记录,例如实现拨号记录查询的功能。这通常涉及到对Android系统内部数据的访问和处理。根据提供的代码片段来看,...

    Android获取手机通话记录的方法

    - 在Android中,通话记录是由系统的`CallLog` ContentProvider管理的。要查询通话记录,需要使用`CallLog.Calls.CONTENT_URI`,这是一个常量,表示通话记录的URI。 3. **查询操作**: - 使用ContentResolver的`...

    android 获取短信和通话记录信息

    在Android平台上,获取短信和通话记录信息是开发者常用于实现各种功能,如日志记录、安全监控或备份应用的关键操作。下面将详细讲解如何在Android系统中获取这些数据。 一、获取短信信息 1. 权限声明: 首先,为了...

    android通话记录获取

    Android提供了`CallLog`类来访问和操作通话记录。主要涉及到以下几个关键的类和方法: - **`CallLog.Calls`**:这是一个内部类,提供了与通话记录相关的常量。 - **`CallLog.Calls.CONTENT_URI`**:代表了通话记录的...

    Android应用通话记录_安卓源码.zip

    通话记录功能涉及的API主要位于Android框架层,包括TelephonyManager、CallLog类和ContentProvider等。TelephonyManager提供与电话服务交互的方法,如获取设备的IMEI、SIM状态等。CallLog类则用于访问通话历史记录,...

    android 批量插入联系人、短信、通话记录,安装版,apk格式

    短信则通过`SmsProvider`来管理,而通话记录则由`CallLog` Content Provider负责。自Android 4.4(KitKat)版本开始,出于安全考虑,插入短信的权限变得更加严格,一般的应用程序无法直接写入短信数据库,除非具有`...

    Android hqthdx获取通话记录和短信记录 源码

    在Android中,通话记录是存储在`CallLog`表中的,可以通过ContentProvider来访问。ContentResolver是与ContentProvider交互的接口,我们通常使用`ContentResolver.query()`方法来查询通话记录。主要涉及以下步骤: ...

    android写sms,calllog数据库

    在Android系统中,SMS(短消息服务)和CallLog(通话记录)是两个重要的功能模块,它们的数据存储在系统的SQLite数据库中。SQLite是Android设备上默认的轻量级数据库,用于应用程序存储结构化数据。本篇文章将深入...

    calllog概述

    android中calllog简介,以及做contacts时遇到的几个问题。

    Android之插入联系人+通话记录+短信记录

    在Android平台上,开发人员可以利用Android提供的API来操作和管理设备上的联系人、通话记录以及短信记录。这个项目"Android之插入联系人+通话记录+短信记录"显然旨在实现自动化处理这些数据,使得应用程序能够自动...

    真机获取安卓通话记录

    在Android开发中,获取真机通话记录是一项常见的需求,主要用于数据分析、日志记录或特定功能的实现。这个“真机获取安卓通话记录”的项目演示了如何在真实的Android设备上获取通话记录信息。在模拟器上进行测试时,...

Global site tag (gtag.js) - Google Analytics