当前位置:编程学习 > wap >>

android 如何获取通话记录

想要得到联系人的通话记录或者通话时长 有什么方式可以实现 ,看到网上只有这样的一段代码
String str = "";
        int type;
        long callTime;
        Date date;
        String time= "";
        ContentResolver cr = getContentResolver();
        final Cursor cursor = cr.query(CallLog.Calls.CONTENT_URI, new String[]{CallLog.Calls.NUMBER,CallLog.Calls.CACHED_NAME,CallLog.Calls.TYPE, CallLog.Calls.DATE}, null, null,CallLog.Calls.DEFAULT_SORT_ORDER);
        for (int i = 0; i < cursor.getCount(); i++) {  
            cursor.moveToPosition(i);
            str = cursor.getString(0);
            str = cursor.getString(1);
            type = cursor.getInt(2);
            SimpleDateFormat sfd = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
            date = new Date(Long.parseLong(cursor.getString(3)));
            time = sfd.format(date);
           }

不大懂这代码的意思,我将str和time 打印出来 得到这样的信息 null:1970-01-01 08:00:00 完全不是想要的东西啊
请教大牛指点这段代码。。。  --------------------编程问答-------------------- 从 CallLog.Calls.CONTENT_URI读取是OK的,进入for循环之前先看下cursor 取到数据没,如果取到了,那就是for操作的不对,或者再尝试下不要指定列,试试 --------------------编程问答-------------------- --------------------编程问答-------------------- 我试过了,代码没错,是你自己弄错了 --------------------编程问答-------------------- ContentUris.withAppendedId(CallLog.Calls.CONTENT_URI, id) --------------------编程问答-------------------- 代码没问题,首先str 代表的是CallLog.Calls.CACHED_NAME,值为null 所以你看到null正常,你可以试着打印其他的,如cursor.getString(0),这样出来的是电话号码,time指的是通话时间,没问题的,可能是你弄错了,所以看到的是格林尼治时间,你的CallLog里面有通话记录吧....再试试 --------------------编程问答-------------------- 本地的联系人的信息改变后,通话记录对应的联系人的通话记录也会跟着该吗? --------------------编程问答-------------------- String CallNumber = cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER));

这样做吧,可以保证他的所在行的index --------------------编程问答-------------------- 你的str被上一个str覆盖了
--------------------编程问答-------------------- 你的str被上一个str覆盖了
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,