congtentprovider获取通话记录

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>

 

posted @ 2015-10-30 13:33  aaddrrooiidd  阅读(269)  评论(0编辑  收藏  举报