找回密码
 立即注册
查看: 3437|回复: 0

Tizen设备调用通话记录:管理设备上的通话历史

[复制链接]
发表于 2016-4-17 13:09:09 | 显示全部楼层 |阅读模式
本教程演示了如何管理和监控调用通话历史记录。
此功能只支持移动应用程序。
热身
熟悉API调用历史基础知识学习:
寻找调用历史项目
检索调用历史项目。
删除调用历史物品
获取和删除调用历史项目。
监控调用历史
使用事件处理程序来跟踪变化的历史。
任务
通话记录的任务,我们将穿过如何在应用程序中管理通话记录。
先决条件
使用调用历史API,应用程序必须通过添加以下权限请求许可 config.xml 文件:
  1. <tizen:privilege name="http://tizen.org/privilege/callhistory.read"/>
  2. <tizen:privilege name="http://tizen.org/privilege/callhistory.write"/>
复制代码

寻找调用历史项目
学习如何检索调用历史项目使用不同的参数,您可以查看特定项目在一个特定的顺序,使调用历史监控容易和方便。
  • 检索调用历史项目,使用 找到 ( successCallback , errorCallback , 过滤器 , sortMode , 限制 , 抵消 ) 的方法 CallHistory接口。
    这个方法是异步的,查询的结果是一个数组 CallHistoryEntry对象。
    1. tizen.callhistory.find(onSuccess, onError, ifilter, sortMode, 20, 10);
    复制代码

  • 使用 SuccessCallback 参数的 找到 () 方法为查询结果集定义一个事件处理程序。下面的代码片段,发现调用历史项添加到控制台日志。
    1. function onSuccess(results)
    2. {
    3.    console.log(results.length + " call history item(s) found!");
    4.    for (var i = 0; i < results.length; i++)
    5.    {
    6.       console.log(i + ". " + results[i].toString());
    7.       /* Process the CallHistoryEntry */
    8.    }
    9. }
    复制代码

  • 使用 过滤器 参数的 找到 () 方法定义一个过滤器的过滤查询结果集。 CallHistoryEntry 属性是用来限制调用历史搜索的结果。
    您可以定义不同的过滤器:
    AttributeFilter 基于单个类型用于搜索 CallHistoryEntry 属性(属性支持过滤器,看到 CallHistory过滤器属性)。

    • 例如,下面的过滤器定义,只有移动电话或远程呼叫,方有电话123456789查询结果中包括:
      1. /* First filter example */
      2. var filter = new tizen.AttributeFilter("type", "EXACTLY", "TEL");
      3. /* Second filter example */
      4. var numberFilter = new tizen.AttributeFilter("remoteParties.remoteParty", "EXACTLY", "123456789")
      复制代码

    2.CompositeFilter 类型表示一组过滤器。 的 联盟 复合过滤匹配任何类型对象和它的任何过滤器匹配; 十字路口 型复合过滤匹配所有对象所匹配的所有的过滤器。
    例如,下面的代码片段定义了一组过滤器,包括在查询结果只有远程的视频通话方电话号码123456789,电话在2009年或2009年开始:
    1. /* Create the ranges for the time filter */
    2. var y2009Filter = new tizen.AttributeRangeFilter("startTime",
    3.                                                  new Date(2009, 0, 1),
    4.                                                  new Date(2010, 0, 1));
    5. var y2011Filter = new tizen.AttributeRangeFilter("startTime",
    6.                                                  new Date(2011, 0, 1),
    7.                                                  new Date(2012, 0, 1));
    8. /* Create a time filter */
    9. var dataFilter = new tizen.CompositeFilter("UNION",
    10.                                            [y2009Filter, y2011Filter]);
    11. /* Create a video call filter */
    12. var tfilter = new tizen.AttributeFilter("features", "EXACTLY", "VIDEOCALL");
    13. /* Combine the filters into a set */
    14. var ifilter = new tizen.CompositeFilter("INTERSECTION", [numberFilter, dataFilter, tfilter]);
    复制代码
4.使用 sortMode 参数顺序查询结果集,如果参数是未定义或一组 零 ,结果在降序排序默认排序。

下面的代码片段,发现调用历史项目根据开始时间排序,按照降序排列:
  1. var sortMode = new tizen.SortMode("startTime", "DESC");
复制代码
5.使用 限制 和 抵消 参数 找到 () 方法来指定起点和上限的结果返回。

的 限制 参数指定返回的匹配结果的最大数目(0使限制无限的价值),而 抵消 参数跳过许多匹配结果返回(值0表示没有跳过)。

例如,如果您的搜索结果中包含100个匹配结果和您指定一个偏移量为10和20的限制,得到10-29的对象。 0 - 9的匹配结果跳过由于抵消,和20个结果从第一个结果抵消后返回。

删除调用历史物品
学习如何删除调用历史项目允许你保持调用历史列表组织并保存在设备上存储空间:

1.使用 删除 () 的方法 CallHistory 接口从调用历史删除一个特定的项目。 首先,搜索条目被删除的 找到 () 方法,然后在事件处理程序中处理去除时被调用 找到 () 方法是成功的。
  1. /* Remove the found call history item */
  2. function onSuccess(results)
  3. {
  4.    if (results.length > 0)
  5.       tizen.callhistory.remove(results[0]);
  6. }
  7. var numberFilter = new tizen.AttributeFilter("remoteParties.remoteParty",
  8.                                              "EXACTLY", "123456789");
  9. /* Search for the item to be removed */
  10. tizen.callhistory.find(onSuccess, onError, numberFilter, null, 1);
复制代码

2.删除多个调用历史项目,使用 removeBatch () 方法。

的 removeBatch () 同样的方法功能 删除 () 方法,除了它删除的列表调用历史项目而不是一个项目:
  1. /* Define success callback */
  2. function onSuccess(results)
  3. {
  4.    tizen.callhistory.removeBatch(results);
  5. }
  6. var numberFilter = new tizen.AttributeFilter("remoteParties.remoteParty",
  7.                                              "EXACTLY", "123456789");
  8. tizen.callhistory.find(onSuccess, onError, numberFilter);
复制代码

3.删除所有调用历史项目,使用 removeAll () 方法:
  1. tizen.callhistory.removeAll();
复制代码

监控调用历史
学习如何注册变更监听器允许你同步应用程序的视图的变化叫历史数据库。

1.定义 onadded 事件处理程序的 CallHistoryChangeCallback 监听器接口,跟踪所有新传入和传出调用添加到调用历史。
  1. var onHistoryChange =
  2. {
  3.    onadded: function(newItems)
  4.    {
  5.       for (var i in newItems)
  6.       {
  7.          console.log("Item " + i + " is newly added. Its startTime: " + newItems[i].startTime);
  8.       }
  9.    },
复制代码
2.定义 onchange 调用事件处理程序,它将跟踪所有的变化历史。

事件处理程序接收一个数组作为参数 CallHistoryEntry 实例,它代表着改变历史项目调用。
  1. onchanged: function(changedItems)
  2.    {
  3.       for (var i in changedItems)
  4.       {
  5.          console.log("Item " + i + " is updated. Its direction: " + changedItems[i].direction);
  6.       }
  7.    },
复制代码

3.定义 onremoved 事件处理程序,它将跟踪所有项目从调用历史:
  1.    onremoved: function(removedItems)
  2.    {
  3.       for (var i in removedItems)  
  4.       {
  5.          console.log("Item " + i + " is removed. The removed item's UID: " + removedItems[i]);
  6.       }
  7.    }
  8. };
复制代码

4.使用 addChangeListener () 的方法 CallHistory 接口注册一个侦听器观察历史的变化:
  1. var callHistoryListener = tizen.callhistory.addChangeListener(onHistoryChange);
复制代码

5.使用 removeChangeListener () 注销以前注册的侦听器方法。 使用返回的ID addChangeListener () :
  1. tizen.callhistory.removeChangeListener(callHistoryListener);
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
欢迎来到泰泽网:http://www.tizennet.com/ 泰泽论坛:http://bbs.tizennet.com/ 好没有内涵哦,快到设置中更改这个无聊的签名吧!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|泰泽应用|泰泽论坛|泰泽网|小黑屋|Archiver|手机版|泰泽邮箱|泰泽网 ( 蜀ICP备13024062号-1 )

GMT+8, 2024-11-24 23:56 , Processed in 0.123948 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表