Android获取通话记录【名称,号码,日期,通话时间,类型】

Android获取通话记录[名称,号码,日期,通话时间,类型]

    /**
     * 得到所属'列'后,记住这些值,访问数据库的速度可以提高两倍
     */
    public static final int CACHED_NAME=16;
    public static final int NUMBER=0;
    public static final int DATE=6;
    public static final int DURATION=7;
    public static final int TYPE=22;

    public List<CallPO> getCallList(Context context) {
        Cursor cursor = context.getContentResolver()
                .query(CallLog.Calls.CONTENT_URI, null, null, null, CallLog.Calls.DEFAULT_SORT_ORDER);

        if (cursor.getCount() <= 0) {
            return null;
        }
        List<CallPO> list = new ArrayList<>();
        while (cursor.moveToNext()) {
            CallPO call = new CallPO();

            /* Reading Name */
            /**int a=cursor.getColumnIndex(CallLog.Calls.CACHED_NAME);*/
            String nameTemp = cursor.getString(CACHED_NAME);

            if (nameTemp==null||nameTemp.length()==0) {
                call.setDisplay_name("未知");
            } else {
                call.setDisplay_name(nameTemp);
            }

            /**int b=cursor.getColumnIndex(CallLog.Calls.NUMBER);*/
            call.setNumber(cursor.getString(NUMBER));

            /* Reading Date */
            /**int c=cursor.getColumnIndex(CallLog.Calls.DATE);*/
            String date= DateUtil.timedate(cursor.getString(DATE));
            call.setDate(date);

            /* Reading duration */
            /** int d=cursor.getColumnIndex(CallLog.Calls.DURATION);*/
            call.setDuration(cursor.getString(DURATION)+"秒");

            /* Reading Date */
            /**
             * 1.已接
             * 2.已拨
             * 3.未接
             */
            /**int e=cursor.getColumnIndex(CallLog.Calls.TYPE);*/
            int type=cursor.getInt(TYPE);
            String result="";
            switch (type) {
                case CallLog.Calls.INCOMING_TYPE:
                    result = "已接";
                    break;
                case CallLog.Calls.OUTGOING_TYPE:
                    result = "已拨";
                    break;
                case CallLog.Calls.MISSED_TYPE:
                    result = "未接";
                    break;
                default:
                    break;
            }
            call.setType(result);
            list.add(call);
        }
        cursor.close();
        return list;
    }

public class CallPO {
    private String display_name;
    private String number;
    private String date;
    private String duration;
    private String type;

    public String getDisplay_name() {
        return display_name;
    }

    public void setDisplay_name(String display_name) {
        this.display_name = display_name;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public String getDuration() {
        return duration;
    }

    public void setDuration(String duration) {
        this.duration = duration;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }
}


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值