package com.example.contentprovidertest2;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.os.Bundle;
import android.provider.CallLog;
import android.provider.CallLog.Calls;
import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.view.Menu;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class MainActivity extends Activity {
private ListView lv;
private List<Map<String, Object>> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.lv);
list = new ArrayList<Map<String, Object>>();
//解析器
ContentResolver resolver = getContentResolver();
//查询所有通话记录
Cursor cursor = resolver.query(CallLog.Calls.CONTENT_URI, null, null,
null, null);
while (cursor.moveToNext()) {
Map<String, Object> map = new HashMap<String, Object>();
String type = "";
//判断是那种方式
switch (Integer.parseInt(cursor.getString(cursor
.getColumnIndex(Calls.TYPE)))) {
case Calls.INCOMING_TYPE:
type = "呼入";
break;
case Calls.OUTGOING_TYPE:
type = "呼出";
break;
case Calls.MISSED_TYPE:
type = "未接";
break;
default:
type = "挂断";
}
//把时间进行初始化
SimpleDateFormat sfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date(Long.parseLong(cursor.getString(cursor
.getColumnIndexOrThrow(Calls.DATE))));
//获得电话号码
String num = cursor.getString(cursor
.getColumnIndexOrThrow(Calls.NUMBER));
map.put("type", type);
map.put("num", num);
map.put("date", sfd.format(date));
list.add(map);
}
lv.setAdapter(new SimpleAdapter(this, list, R.layout.item_lv,
new String[] { "type", "date","num" }, new int[] { R.id.tv_type,
R.id.tv_time ,R.id.tv_phone}));
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/tv_type"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center_horizontal"
android:text="呼出"
/>
<TextView
android:id="@+id/tv_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center_horizontal"
android:text="2015-10-30"
/>
<TextView
android:id="@+id/tv_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center_horizontal"
android:text="13844924435"
/>
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:text="手机联系人"
android:textSize="21sp" />
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>