.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>();@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.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>

更多相关文章

  1. android 文件名长度限制
  2. Android 访问权限许可大全
  3. android 模拟器获取root权限的方法
  4. 修改Android系统目录的读写权限命令
  5. Android 6.0权限处理问题
  6. 探索新的Android权限模式
  7. Linux文件的特殊权限位SUID、SGID作用及编程设置/读取
  8. Android 事件全局监听(二)需要root权限 ,使用getevent监听Android输
  9. Android运行时权限,6.0—9.0多版本,多终端(手机,TV盒子)130行代码一劳

随机推荐

  1. Android(安卓)开发之Android(安卓)应用程
  2. Android(安卓)Studio 开发,找不到android.
  3. Android 解屏代码
  4. Android 4.0 HttpUrlConnection的getInpu
  5. Android 复习笔记之图解Activity的4种加
  6. android新建项目报关于progurad.xml不存
  7. android 输入框自动匹配-AutoCompleteTex
  8. android 自动更新网址保存
  9. Android(安卓)TV RecyclerView 焦点处理
  10. android View 绘制完成监听