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>