静思夜 发表于 2016-4-17 13:09:09

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

本教程演示了如何管理和监控调用通话历史记录。此功能只支持移动应用程序。热身熟悉API调用历史基础知识学习:寻找调用历史项目检索调用历史项目。删除调用历史物品获取和删除调用历史项目。监控调用历史使用事件处理程序来跟踪变化的历史。任务在 通话记录的任务,我们将穿过如何在应用程序中管理通话记录。先决条件使用调用历史API,应用程序必须通过添加以下权限请求许可 config.xml 文件:<tizen:privilege name="http://tizen.org/privilege/callhistory.read"/>
<tizen:privilege name="http://tizen.org/privilege/callhistory.write"/>
寻找调用历史项目学习如何检索调用历史项目使用不同的参数,您可以查看特定项目在一个特定的顺序,使调用历史监控容易和方便。
[*]检索调用历史项目,使用 找到 ( successCallback , errorCallback , 过滤器 , sortMode , 限制 , 抵消 ) 的方法 CallHistory接口。
这个方法是异步的,查询的结果是一个数组 CallHistoryEntry对象。tizen.callhistory.find(onSuccess, onError, ifilter, sortMode, 20, 10);
[*]使用 SuccessCallback 参数的 找到 () 方法为查询结果集定义一个事件处理程序。下面的代码片段,发现调用历史项添加到控制台日志。function onSuccess(results)
{
   console.log(results.length + " call history item(s) found!");
   for (var i = 0; i < results.length; i++)
   {
      console.log(i + ". " + results.toString());
      /* Process the CallHistoryEntry */
   }
}
[*]使用 过滤器 参数的 找到 () 方法定义一个过滤器的过滤查询结果集。 CallHistoryEntry 属性是用来限制调用历史搜索的结果。您可以定义不同的过滤器: AttributeFilter 基于单个类型用于搜索 CallHistoryEntry 属性(属性支持过滤器,看到 CallHistory过滤器属性)。

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

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

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

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

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

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

的 removeBatch () 同样的方法功能 删除 () 方法,除了它删除的列表调用历史项目而不是一个项目:/* Define success callback */
function onSuccess(results)
{
   tizen.callhistory.removeBatch(results);
}
var numberFilter = new tizen.AttributeFilter("remoteParties.remoteParty",
                                             "EXACTLY", "123456789");
tizen.callhistory.find(onSuccess, onError, numberFilter);
3.删除所有调用历史项目,使用 removeAll () 方法:tizen.callhistory.removeAll();
监控调用历史
学习如何注册变更监听器允许你同步应用程序的视图的变化叫历史数据库。

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

事件处理程序接收一个数组作为参数 CallHistoryEntry 实例,它代表着改变历史项目调用。 onchanged: function(changedItems)
   {
      for (var i in changedItems)
      {
         console.log("Item " + i + " is updated. Its direction: " + changedItems.direction);
      }
   },
3.定义 onremoved 事件处理程序,它将跟踪所有项目从调用历史:   onremoved: function(removedItems)
   {
      for (var i in removedItems)
      {
         console.log("Item " + i + " is removed. The removed item's UID: " + removedItems);
      }
   }
};
4.使用 addChangeListener () 的方法 CallHistory 接口注册一个侦听器观察历史的变化:var callHistoryListener = tizen.callhistory.addChangeListener(onHistoryChange);
5.使用 removeChangeListener () 注销以前注册的侦听器方法。 使用返回的ID addChangeListener () :
tizen.callhistory.removeChangeListener(callHistoryListener);
页: [1]
查看完整版本: Tizen设备调用通话记录:管理设备上的通话历史