HBuilder 获取通话记录 (Android)

Date.prototype.Format = function (fmt) {
         var o = {
        "M+": this.getMonth() + 1, //月份
        "d+": this.getDate(), //日
        "h+": this.getHours()%12==0?12:this.getHours()%12, //小时
        "H+": this.getHours(),
        "m+": this.getMinutes(), //分
        "s+": this.getSeconds(), //秒
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "f": this.getMilliseconds() //毫秒
    };
    if (/(y+)/.test(fmt))
    fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
    if (new RegExp("(" + k + ")").test(fmt))
        fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
} 

  function getCallLog() {
      var content="";
     try{
    document.getElementById("output").innerHTML="";
    var CallLog = plus.android.importClass("android.provider.CallLog");
    var main = plus.android.runtimeMainActivity();
    var obj = main.getContentResolver();
    plus.android.importClass(obj);
    //查询
    var cursor = obj.query(CallLog.Calls.CONTENT_URI, null, null, null, null);
//  var SimpleDateFormat = plus.android.importClass("java.text.SimpleDateFormat");
//  var Date = plus.android.importClass("java.util.Date");
//  var Long = plus.android.importClass("java.util.Long");
    plus.android.importClass(cursor);
    var count = 0;
    var arr=[];
    if (cursor.moveToFirst()) {
        while (cursor.moveToNext()) {
            count++;
            //号码
            var number = cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER));
            //呼叫类型
            var type;
            switch (parseInt(cursor.getString(cursor.getColumnIndex(CallLog.Calls.TYPE)))) {
            case CallLog.Calls.INCOMING_TYPE:
                type = "呼入";
                break;
            case CallLog.Calls.OUTGOING_TYPE:
                type = "呼出";
                break;
            case CallLog.Calls.MISSED_TYPE:
                type = "未接";
                break;
            default:
                type = "挂断"; //应该是挂断.根据我手机类型判断出的
                break;
            }
//          var sfd = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
var date = new Date(parseInt(cursor.getString(cursor.getColumnIndexOrThrow(CallLog.Calls.DATE))));
//var time = sfd.format(date);//格式化的效果:例如2010-01-08 09:10:11
var time=date.Format("yyyy-MM-dd HH:mm:ss:f");
//          var sfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//          var Date_Col = cursor.getColumnIndex(CallLog.Calls.DATE);
//          var Date_Value = cursor.getString(Date_Col);
//          console.log(Date_Value);
//          var t = parseInt(Date_Value);
//          console.log(t);
            //呼叫时间
//       var time = sfd.format(new Date(t));
//          var time=new Date(t);
//       var time=cursor.getString(cursor.getColumnIndexOrThrow(CallLog.Calls.DATE));
            //联系人
            var Name_Col = cursor.getColumnIndexOrThrow(CallLog.Calls.CACHED_NAME);
            var name = cursor.getString(Name_Col);
            //通话时间,单位:s
            var Duration_Col = cursor.getColumnIndexOrThrow(CallLog.Calls.DURATION);
            var duration = cursor.getString(Duration_Col); 

            var obj={};
            obj.num=count;
            obj.name=name;
            obj.phone=number;
            obj.time=time;
            obj.type=type;
            obj.duration=duration>3600?new Date(duration*1000).Format("HH:mm:ss"):new Date(duration*1000).Format("mm:ss");
            arr.push(obj);
            outLine(JSON.stringify(obj));
//        console.log(JSON.stringify(obj));
            console.log(time + " " + " name:"+name+" phone:"+number + “ type:"+type + " duration:" + duration);
            content+=str;
             if (count > 50) {
                break;
            }
        } 

    }
//  console.log(JSON.stringify(arr));
//  console.log(arr.length);
//  content="";
//  for(var i=0;i //      content+=JSON.stringify(arr[i]);
//      content+="\n";
//  }
   }
     catch(e){
         content=e.message;
     } 

    outLine(content);
} 
时间: 2024-12-28 16:56:22

HBuilder 获取通话记录 (Android)的相关文章

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

上一篇博客讲的是获取联系人信息,这篇是获取通话记录 同样你可以在这里下载http://download.csdn.net/detail/waniu123/8554533 package cn.zxw.contact.domain; /** * 通话记录 * @author zhan * */ public class CallLogInfo { public String number; public long date; public int type; public CallLogInfo(

Android通讯录管理(获取联系人、通话记录、短信消息)(二)

http://blog.csdn.net/wwj_748/article/details/19970271 Android通讯录管理(获取联系人.通话记录.短信消息)(二) 2014-02-26 11:40 9076人阅读 评论(11) 收藏 举报  分类: [Android通讯录模块开发](10)  版权声明:本文为博主原创文章,未经博主允许不得转载. Android通讯录管理(获取联系人.通话记录.短信消息)(二) 前言:上一篇博客介绍的是获取联系人的实现,本篇博客将介绍通话记录的实现. 同

Android笔记——对系统通话记录的删除操作

手机通话记录是保存在数据库中的,位置:  /data/data/com.android.providers.contacts/databases/calllog.db ,表名:calls 这张表中有个type字段,属性值为常量值: 来电:CallLog.Calls.INCOMING_TYPE (常量值:1) 已拨:CallLog.Calls.OUTGOING_TYPE(常量值:2) 未接:CallLog.Calls.MISSED_TYPE(常量值:3) 这是最常见的,number字段表示电话号码

Android批量添加通话记录

在前面有提到批量添加联系人:Android批量添加联系人到通讯录,通话记录和通讯录一样都是直接操作ContentProvider.为了使批量更新.插入.删除数据更加方便,android系统引入了 ContentProviderOperation类,使用ContentProviderOperation的理由 1.所有的操作都在一个事务中执行,这样可以保证数据完整性 2.由于批量操作在一个事务中执行,只需要打开和关闭一个事务,比多次打开关闭多个事务性能要好些 3.使用批量操作和多次单个操作相比,减少

操作Android中联系人,通话记录,短息,的URI,和具体的查询语句,字段注解。(根据自己需求)

记住读取联系人需要配置权限:<uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_CONTACTS" /> 读取联系人的URI: /** * 所有联系人的查询语句 * cotacts2联系人数据库中 * 与联系人相关的几张数据表 * contacts

android 通话记录条数的限制

在frameworks\base\core\java\android\provider下面有CallLog.java,这支文件里,每当完成一通电话向call表中插入一条callLog记录后,调用removeExpiredEntries这个函数将超过500条的那条记录 如果要对其限制条件进行修改的话,可以对这个函数进行 E.g:根据不同类型的通话记录对其进行限制,步骤如下: 1.首先对函数添加一个callType的参数(INCOMING_TYPE = 1; OUTGOING_TYPE = 2; M

[Android编程]如何操作通话记录

Android的通话记录都实现在静态类android.provider.CallLog.Calls中. 首先需要读写通话记录的的权限 <uses-permission android:name="android.permission.READ_CALL_LOG"/> <uses-permission android:name="android.permission.WRITE_CALL_LOG"/> ? 读取 Cursor cursor =

Android 手机卫士8--删除通话记录

1.编写代码需要注意bug: 再删除通话记录的时候,删除的是以前的通话记录,本次拦截下来的电话号码,通话记录没有删除?????? 问题原因:数据库中本次通话记录的电话号码还没有插入,就做了删除操作 2.bug解决方法: 内容提供者:对外提供数据库的访问方式 内容解析器:用内容提供者提供的访问方式Uri,访问数据库(增删改查) 内容观察者:观察数据库的变化,一旦数据发生改变,调用相应方法 通过内容观察者,观察数据库的插入,一旦有插入,则做删除此条插入数据操作 public void endCall

Android 插入数据工具 实现无限制条数插入通话记录、联系人、短息和彩信

1.支持无限制条数批量高效写入通话记录.联系人.彩信等. 2.支持写入过程中实时显示进度提示. 3.支持写入过程中手动停止写入操作. 4.设置中可以打开或关闭声音和震动提示. 效果图如下:   下载地址: http://pan.baidu.com/s/1rvNdk 需要源码的请在评论区留下邮箱.