Android通讯录管理二之通话记录获取

上一篇博客讲的是获取联系人信息,这篇是获取通话记录

同样你可以在这里下载

package cn.zxw.contact.domain;/** * 通话记录 * @author zhan * */public class CallLogInfo {public String number;public long date;public int type;public CallLogInfo(String number, long date, int type) {super();this.number = number;this.date = date;this.type = type;}public CallLogInfo() {super();}}

获取通话记录

/** * 获取所有的通话记录 * * @param context * @return */public List<CallLogInfo> getCallLog(Context context) {List<CallLogInfo> infos = new ArrayList<CallLogInfo>();ContentResolver cr = context.getContentResolver();Uri uri = Calls.CONTENT_URI;String[] projection = new String[] { Calls.NUMBER, Calls.DATE,Calls.TYPE };Cursor cursor = cr.query(uri, projection, null, null, null);while (cursor.moveToNext()) {String number = cursor.getString(0);long date = cursor.getLong(1);int type = cursor.getInt(2);infos.add(new CallLogInfo(number, date, type));}cursor.close();return infos;}activity中代码

package cn.zxw.contact;import java.text.SimpleDateFormat;import java.util.List;import cn.zxw.contact.domain.CallLogInfo;import cn.zxw.contact.utils.ContactsMsgUtils;import android.app.Activity;import android.app.AlertDialog;import android.content.Context;import android.content.DialogInterface;import android.content.DialogInterface.OnClickListener;import android.content.Intent;import android.graphics.Color;import android.net.Uri;import android.os.Bundle;import android.provider.CallLog.Calls;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.AdapterView.OnItemLongClickListener;import android.widget.BaseAdapter;import android.widget.ListView;import android.widget.TextView;/** * 获取通话记录 * 根据电话类型分为 来电、去电、未接三种类型,显示三种不同颜色标记 * 长按号码,,弹出对话框选择:复制号码到拨号盘, 拨号, 发送短信 * @author zhan * */public class CallLogActivity extends Activity {private ListView lv;private MyAdapter adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_contacts_msg_calllog);lv = (ListView) findViewById(R.id.lv);ContactsMsgUtils contactsMsgUtils = new ContactsMsgUtils();List<CallLogInfo> infos = contactsMsgUtils.getCallLog(this);adapter = new MyAdapter(infos);lv.setAdapter(adapter);lv.setOnItemLongClickListener(new OnItemLongClickListener() {@Overridepublic boolean onItemLongClick(AdapterView<?> arg0, View arg1,int arg2, long arg3) {CallLogInfo info = (CallLogInfo) adapter.getItem(arg2);final String number = info.number;String[] items = new String[] { "复制号码到拨号盘", "拨号", "发送短信" };new AlertDialog.Builder(CallLogActivity.this).setTitle("操作").setItems(items, new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which) {switch (which) {case 0:// 复制号码到拨号盘startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + number)));break;case 1:// 拨号 权限startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + number)));break;case 2:// 发送短信startActivity(new Intent(Intent.ACTION_SENDTO, Uri.parse("sms:" + number)));break;default:break;}}}).show();return false;}});}// 创建baseadapterprivate class MyAdapter extends BaseAdapter {private List<CallLogInfo> infos;private LayoutInflater inflater;public MyAdapter(List<CallLogInfo> infos) {super();this.infos = infos;inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn infos.size();}@Overridepublic Object getItem(int position) {return infos.get(position);}@Overridepublic long getItemId(int position) {return 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {View view = inflater.inflate(R.layout.call_log_item, null);TextView tv_number = (TextView) view.findViewById(R.id.tv_number);TextView tv_date = (TextView) view.findViewById(R.id.tv_date);TextView tv_type = (TextView) view.findViewById(R.id.tv_type);// 新建一个对象CallLogInfo info = infos.get(position);tv_number.setText(info.number);// 格式时间SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");String dateStr = format.format(info.date);tv_date.setText(dateStr);String typeStr = null;int color = 0;switch (info.type) {case Calls.INCOMING_TYPE:typeStr = "来电";color = Color.BLUE;break;case Calls.OUTGOING_TYPE:typeStr = "去电";color = Color.GREEN;break;case Calls.MISSED_TYPE:typeStr = "未接";color = Color.RED;break;default:break;}tv_type.setText(typeStr);tv_type.setTextColor(color);return view;}}}

在这个阳光明媚的三月,我从我单薄的青春里打马而过,

Android通讯录管理二之通话记录获取

相关文章:

你感兴趣的文章:

标签云: