Widget API 接口实例演示(二) ——Telephony类和PIM类

OPhone平台开发, 2010-01-05 15:03:07

标签 : 接口 API PIM Telephony

关于电话通讯的接口 —— Telephony

Telephony 下面有两个子对象,CallRecordCallRecordTypes
有六个方法:
1,deleteAllCallRecords(<String> callRecordType) 删除所有指定的通话记录类型,通话记录类型由callRecordType 提供,callRecordType 能提供三种类型:MISSED 未接电话,OUTGOING 拨出电话,RECEIVED 已接电话。
2,deleteCallRecord 删除指定的通话记录callRecordType 提供记录类型,参数id指定编号为第几的号码。 (<String> callRecordType, <String> id)
3,findCallRecords(<CallRecord>comparisonRecord, <Number> startInx,<Number> endInx)
异步函数,在通话记录里搜索指定的号码,comparisonRecord 指定一个号码,startInx 返回搜索结果从第几条开始,endInx 返回搜索结果在第几条结束,如果你搜索到了10个相同的记录,只想返回第5到第7条记录,那么startInx 填4 endInx 填6. startInx 的基数从0开始。
4,getCallRecord(<String> callRecordType, <String> id) 返回一个通话记录,callRecordType 指定类型,id指定编号。
5,getCallRecordCnt(<String> callRecordType) 返回通话记录的总数,callRecordType 指定通话记录类型。
6,initiateVoiceCall(<String> phoneNumber) 拨打一个电话phoneNumber 指定电话号码。
两个事件:
1,onCallEvent(<String> callType, <String> phoneNumber) 系统事件,当有电话拨入,或者拨出,或者有未接的电话时发生,onCallEvent 为回调函数,自动传入两个参数,callType 电话类型,默认的有"received", "missed" 和 "outgoing" ,phoneNumber 为电话号码。
2,onCallRecordsFound(<Array> callRecordsFound) 程序事件,当找到匹配的电话号码时发生,这个事件是在使用findCallRecords 方法后发生,findCallRecords 方法本身没有返回,而onCallRecordsFound 事件将传递一个数组参数,这个数组就是findCallRecords 方法找到的匹配结果。
CallRecord 概要:
这里先介绍CallRecord 类和CallRecordTypes 类的概要,这两个类不会单独演示,将和Telephony 的方法一起演示。
CallRecord 类有四个数据成员:
1,callRecordAddress  为通话记录中的号码
2,callRecordId 为通话记录的编号
3,callRecordName 为通话记录在地址簿中的姓名  
4,callRecordType 为通话记录的类型
5,durationSeconds  为通话时间,以秒做单位
6,startSeconds  为通话开始时间
CallRecordTypes 概要:
CallRecordTypes 能表示三种类型
1,MISSED  代表未接电话
2,OUTGOING  代表拨出电话
3,RECEIVED  代表已接听电话
Telephony 方法演示:
首先建立程序界面,如下图:
里面的数据在js代码里会有介绍,界面代码:
view plain copy to clipboard print ?
  1. <div>
  2. <input type="button"  value= "拨打114"  id= "114" >
  3. <input type="button"  value= "删除信息"  id= "delete" >
  4. <input type="button"  value= "刷新"  id= "refresh" >
  5. <hr>
  6. <span id="total" ></span><br>
  7. <span id="first" ></span><br>
  8. <span id="last" ></span>
  9. <span id="just" ></span>
  10. </div>
 <div>
<input type="button" value="拨打114" id="114">
<input type="button" value="删除信息" id="delete">
<input type="button" value="刷新" id="refresh">
<hr>
<span id="total"></span><br>
<span id="first"></span><br>
<span id="last"></span>
<span id="just"></span>
</div>
js代码:
view plain copy to clipboard print ?
  1. //我们的测试行为是,当程序启动时,在程序的界面上显示一共有多少个电话拨出记录,
  2. //最早的一个记录是什么号码,在什么时间拨出去,最晚的一个记录是什么号码,在什么
  3. //时间拨出去,当按下拨打114按钮时,就拨打114,按下删除记录按钮时,就删除最早的//一条记录,当按下刷新按钮时,就刷新界面上的信息。
  4. function Init(){
  5. var call=document.getElementById('114' );
  6. var Delete=document.getElementById('delete' );
  7. var Refresh=document.getElementById('refresh' );
  8. Refresh.addEventListener('click' ,refreshRecord, false );
  9. call.addEventListener('click' ,callNum, false );
  10. Delete.addEventListener('click' ,deleteRecord, false );
  11. //回调函数,当执行findCallRecords方法后,记录找到时执行foundRecords函数
  12. Widget.Telephony.onCallRecordsFound = foundRecords;
  13. var id="" ; //初始化一个字符串变量,用来存储记录的ID,在下面,我们将用
  14. findCallRecords方法来找到记录的ID
  15. refreshRecord();//当程序启动时执行刷新函数
  16. //当按下拨打114按钮时,执行的函数,调用initiateVoiceCall方法
  17. function callNum(){
  18. Widget.Telephony.initiateVoiceCall("114" );
  19. }
  20. //当按下删除记录按钮时执行的函数,调用deleteCallRecord方法
  21. functiondeleteRecord(){
  22. Widget.Telephony.deleteCallRecord(Widget.Telephony.CallRecordTypes.OUTGOING, id);  //deleteCallRecord方法删除一条记录,
  23. //Widget.Telephony.CallRecordTypes.OUTGOING参数表示删除的是拨出的记录,其
  24. //他类型还有MISSED,和RECEIVED ,需传递一个被删除记录的id号,
  25. //deleteAllCallRecords方法可用来删除所有指定类型的记录
  26. refreshRecord();//删除记录后调用refreshRecord()函数来刷新界面
  27. }
  28. //这个函数用来刷新界面,你可以写更多的代码,给用户提供更多的信息,不过在
  29. //这里只需要执行find函数里的内容,不需要更多的信息。
  30. function refreshRecord(){
  31. find();
  32. }
  33. function find(){
  34. //getCallRecordCnt方法用来获得指定类型记录的总数,我们需要获得拨出记录的总
  35. //数,然后输出在界面上
  36. total=Widget.Telephony.getCallRecordCnt(Widget.Telephony.CallRecordTypes.OUTGOING);
  37. document.getElementById('total' ).innerHTML= 'Total allocated: ' +total;
  38. //下面开始查找所有的拨出记录
  39. var record = new  Widget.Telephony.CallRecord(); //用CallRecord类的构造函
  40. 数,创建一个CallRecord对象,CallRecord类的数据成员在上面已经介绍过。
  41. record.callRecordAddress = "*" ; //用通配符表示所有的号码,你也可以指定一
  42. 个号码
  43. record.callRecordType="outgoing" ; //需要指定一个类型,outgoing为拨出记录
  44. Widget.Telephony.findCallRecords(record,0 ,total- 1 ); //开始查找,返回所有
  45. //找到的结果,因为基数是0,所以要在总数上减1.
  46. }
  47. //当findCallRecords方法执行后发生的事件,onCallRecordsFound回调函数,将传递
  48. //一个数组,这个数组就是找到的记录
  49. function foundRecords(callRecords) {
  50. //获得最早拨出记录的时间
  51. var firstTime=" " +callRecords[callRecords.length- 1 ].startTime.toLocaleTimeString()+ " " +callRecords[callRecords.length- 1 ].startTime.toLocaleDateString();
  52. //获得最后一个拨出记录的时间
  53. var lastTime="" +callRecords[ 0 ].startTime.toLocaleTimeString()+"
  54. "+callRecords[0 ].startTime.toLocaleDateString();
  55. //在界面上输出最早拨出记录的号码和拨出时间
  56. document.getElementById('first' ).innerHTML= 'Thefirst:' +callRecords[callRecords.length- 1 ].callRecordAddress+firstTime;
  57. //在界面上输出最近拨出记录的号码和拨出时间
  58. document.getElementById('last' ).innerHTML= 'Thelast:' +callRecords[ 0 ].callRecordAddress+lastTime;
  59. //获得最早拨出记录的ID号,deleteCallRecord方法需要
  60. id=callRecords[callRecords.length-1 ].callRecordId;
  61. }
  62. }
  63. //当有电话拨入,或者拨出,或者有未接电话时所要执行的函数,在界面上输
  64. //出一行信息
  65. function CallBack(callType, phoneNumber){
  66. document.getElementById('just' ).innerHTML= '<h5>Just' +callType+',N
  67. um: '+phoneNumber+' </h5>';/
  68. }
  69. window.οnlοad=Init;
  70. Widget.Telephony.onCallEvent = CallBack;//onCallEvent事件绑定CallBack函数
//我们的测试行为是,当程序启动时,在程序的界面上显示一共有多少个电话拨出记录,
//最早的一个记录是什么号码,在什么时间拨出去,最晚的一个记录是什么号码,在什么
//时间拨出去,当按下拨打114按钮时,就拨打114,按下删除记录按钮时,就删除最早的//一条记录,当按下刷新按钮时,就刷新界面上的信息。
function Init(){
var call=document.getElementById('114');
var Delete=document.getElementById('delete');
var Refresh=document.getElementById('refresh');
Refresh.addEventListener('click',refreshRecord,false);
call.addEventListener('click',callNum,false);
Delete.addEventListener('click',deleteRecord,false);
//回调函数,当执行findCallRecords方法后,记录找到时执行foundRecords函数
Widget.Telephony.onCallRecordsFound = foundRecords;
var id="";//初始化一个字符串变量,用来存储记录的ID,在下面,我们将用
findCallRecords方法来找到记录的ID
refreshRecord();//当程序启动时执行刷新函数
//当按下拨打114按钮时,执行的函数,调用initiateVoiceCall方法
function callNum(){
Widget.Telephony.initiateVoiceCall("114");
}
//当按下删除记录按钮时执行的函数,调用deleteCallRecord方法
functiondeleteRecord(){
Widget.Telephony.deleteCallRecord(Widget.Telephony.CallRecordTypes.OUTGOING, id);  //deleteCallRecord方法删除一条记录,
//Widget.Telephony.CallRecordTypes.OUTGOING参数表示删除的是拨出的记录,其
//他类型还有MISSED,和RECEIVED ,需传递一个被删除记录的id号,
//deleteAllCallRecords方法可用来删除所有指定类型的记录
refreshRecord();//删除记录后调用refreshRecord()函数来刷新界面
}
//这个函数用来刷新界面,你可以写更多的代码,给用户提供更多的信息,不过在
//这里只需要执行find函数里的内容,不需要更多的信息。
function refreshRecord(){
find();
}
function find(){
//getCallRecordCnt方法用来获得指定类型记录的总数,我们需要获得拨出记录的总
//数,然后输出在界面上
total=Widget.Telephony.getCallRecordCnt(Widget.Telephony.CallRecordTypes.OUTGOING);
document.getElementById('total').innerHTML='Total allocated: '+total;
//下面开始查找所有的拨出记录
var record = new Widget.Telephony.CallRecord();//用CallRecord类的构造函
数,创建一个CallRecord对象,CallRecord类的数据成员在上面已经介绍过。
record.callRecordAddress = "*";//用通配符表示所有的号码,你也可以指定一
个号码
record.callRecordType="outgoing";//需要指定一个类型,outgoing为拨出记录
Widget.Telephony.findCallRecords(record,0,total-1);//开始查找,返回所有
//找到的结果,因为基数是0,所以要在总数上减1.
}
//当findCallRecords方法执行后发生的事件,onCallRecordsFound回调函数,将传递
//一个数组,这个数组就是找到的记录
function foundRecords(callRecords) {
//获得最早拨出记录的时间
var firstTime=" "+callRecords[callRecords.length-1].startTime.toLocaleTimeString()+" "+callRecords[callRecords.length-1].startTime.toLocaleDateString();
//获得最后一个拨出记录的时间
var lastTime=""+callRecords[0].startTime.toLocaleTimeString()+"
"+callRecords[0].startTime.toLocaleDateString();
//在界面上输出最早拨出记录的号码和拨出时间
document.getElementById('first').innerHTML='Thefirst:'+callRecords[callRecords.length-1].callRecordAddress+firstTime;
//在界面上输出最近拨出记录的号码和拨出时间
document.getElementById('last').innerHTML='Thelast:'+callRecords[0].callRecordAddress+lastTime;
//获得最早拨出记录的ID号,deleteCallRecord方法需要
id=callRecords[callRecords.length-1].callRecordId;
}
}
//当有电话拨入,或者拨出,或者有未接电话时所要执行的函数,在界面上输
//出一行信息
function CallBack(callType, phoneNumber){
document.getElementById('just').innerHTML='<h5>Just'+callType+',N
um: '+phoneNumber+'</h5>';/
}
window.οnlοad=Init;
Widget.Telephony.onCallEvent = CallBack;//onCallEvent事件绑定CallBack函数
执行效果:
当程序开始启动时,显示:
因为笔者在模拟器上只打过一个电话,所以最早和最近的拨出号码是一样的。
当笔者拨打了114后,在按刷新按钮,界面显示如下:
当笔者按删除信息按钮后,界面显示如下:
将删除早先拨打10086的记录,所以只剩下拨打114的电话记录。
CallRecord 类的其他数据成员,表示一条通讯记录的其他信息,读者可以自己去试验。读者也可以查询未接电话和已接电话,只需将CallRecordTypes 类的类型更改为MISSED 或者RECEIVED 。记录的ID是一条记录的唯一标识符,一般需通过findCallRecords 方法获得。
关于个人信息管理的接口 —— PIM
PIM 下面有三个子对象:AddressBookItem , EventRecurrenceTypes , CalendarItem
16个方法:
1, addAddressBookItem(<AddressBookItem> contact)  添加一个联系人
2, addCalendarItem(<CalendarItem> calendarItem) 添加一个日历项目
3, createAddressBookGroup(<String> groupName)  在地址簿上创建一个新的组
4, createAddressBookItem() 创建一个空的联系人
5, deleteAddressBookGroup(<String> groupName) 删除地址簿上的一个组
6, deleteAddressBookItem(<String> contactid)  通过指定的ID删除一个联系人
7, deleteCalendarItem(<String> calendarId)  通过指定的ID删除一个日历项目
8, exportAsVCard(addressBookItems)  异步函数,用以导出电子名片
9,findAddressBookItems(<AddressBookItem> comparisonContact, <Number> startInx, <Number> endInx)  异步函数,找到所有指定的联系人项目
10, findCalendarItems(<CalendarItem> itemToMatch, <Number> startInx, <Number> endInx)  异步函数,找到所有指定的日历项目
11, getAddressBookGroupMembers(groupName) 找到所有指定小组中的联系人成员
12, getAddressBookItem(<String> contactid)  通过指定的ID返回一个联系人
13, getAddressBookItemsCount()   返回联系人总数
14, getAvailableAddressGroupNames()  返回地址簿中所有的组名
15, getCalendarItem(<String> calendarId) 通过指定的ID返回一个日历项目
16, getCalendarItems(<Date> startTime, <Date> endTime)  返回指定时间内所有的日历项目
 
四个程序事件:
1,onAddressBookItemsFound 当findAddressBookItems 方法和getAddressBookGroupMembers 方法完成后发生此事件 (addressBookItemsFound) 
2,onCalendarItemAlert(<CalendarItem> calendarItem) 当日历项目的警报启动时发生此事件
3,onCalendarItemsFound(calendarItemsFound)
  findCalendarItems 方法和getAddressBookGroupMemebers 方法完成后发生此事件
4,onVCardExportingFinish(<String> vCardFilePath)  当电子名片导出完成后发生此事件
AddressBookItem 概要:
AddressBookItem 类的对象存储了联系人的信息,信息内容有
1,address  联系人的邮政地址
2,addressBookItemId 联系人在地址簿里的ID
3,company  联系人所属公司
4,eMail
5,fullName 全名
6,homePhone 家庭电话
7,mobilePhone 移动电话
8,title 信息内容标签
9,workPhone 工作电话
有六个方法:
1,getAddressGroupNames()  返回联系人所在的组名
2,getAttributeValue(<String> attribute)  返回指定属性的值
3,getAvailableAttributes()  返回联系人可用的属性
4,setAddressGroupNames(<Array> groups)  设置联系人的组名,参数为字符串数组,可同
时指定多个组名
5,setAttributeValue(<String> attribute, <String> value)  设置属性值
6,update() 更新信息
地址簿操作演示:
笔者先来综合演示下地址簿常用的操作方法。
首先建立界面如下:
界面代码:
view plain copy to clipboard print ?
  1. <input type= "button"  value= "添加号码"  id= "add" ><br>
  2. <input type="button"  value= "更新号码"  id= "update" ><br>
  3. <input type="button"  value= "删除号码"  id= "delete" ><br>
<input type="button" value="添加号码" id="add"><br>
<input type="button" value="更新号码" id="update"><br>
<input type="button" value="删除号码" id="delete"><br>
Js代码:
view plain copy to clipboard print ?
  1. // 当我们点击添加号码的时候将会在通讯录中添加一个联系人,联系人全名为Mobile //Service,所属公司为China Mobile,手机号码 为10086,当点击更新号码时,将会//在联系人里添加一个家庭号码,号码为12530,当点击删除号码时,将会删除手机号码
  2. //为10086的所有联系人。
  3. function Init(){
  4. var Add=document.getElementById('add' );
  5. var Delete=document.getElementById('delete' );
  6. var Update=document.getElementById('update' );
  7. Add.addEventListener('click' ,AddContact, false );
  8. Delete.addEventListener('click' ,DeleteContact, false );
  9. Update.addEventListener('click' ,UpdateContact, false );
  10. Widget.PIM.onAddressBookItemsFound = ContactFound;//回调函数
  11. var Operation="" ; //创建一个字符串变量
  12. function AddContact(){
  13. //创建一个 AddressBookItem类的对象
  14. var contact = new  Widget.PIM.AddressBookItem();
  15. //设置联系人的信息
  16. contact.setAttributeValue("fullName" ,  "Mobile Service" );
  17. contact.setAttributeValue("company" ,  "China Mobile" );
  18. contact.setAttributeValue("mobilePhone" ,  "10086" );
  19. //添加一个联系人
  20. Widget.PIM.addAddressBookItem(contact);
  21. alert("Successfully added" );
  22. }
  23. function DeleteContact(){
  24. //当要执行删除操作时,将Operation赋值为delete
  25. Operation="delete" ;
  26. find();
  27. }
  28. function UpdateContact(){
  29. //当要执行更新操作时,将Operation赋值为update
  30. Operation="update" ;
  31. find();
  32. }
  33. //find函数用来寻找手机号码为10086的所有联系人
  34. function find(){
  35. var total=Widget.PIM.getAddressBookItemsCount()
  36. var contact = new  Widget.PIM.AddressBookItem();
  37. contact.setAttributeValue("mobilePhone" ,  "10086" );
  38. Widget.PIM.findAddressBookItems(contact, 0 , total- 1 );
  39. }
  40. //使用findAddressBookItems方法后将发生此事件
  41. function ContactFound(addressBookItems){
  42. //遍历所有找到的联系人
  43. for (var value= 0 ;value<addressBookItems.length;value++)
  44. {    //当Operation的值为delete执行删除操作
  45. if (Operation== 'delete' ){
  46. Widget.PIM.deleteAddressBookItem(addressBookItems[value].addressBookItemId);
  47. }
  48. //当Operation的值为update执行更新操作
  49. if (Operation== 'update' )
  50. {
  51. var contact = addressBookItems[value];
  52. contact.setAttributeValue("homePhone" ,  "12580" );
  53. contact.update();
  54. }
  55. }
  56. if (Operation== 'delete' ){
  57. alert('Deleted successfully' );
  58. }
  59. else {
  60. alert('Updated successfully' );
  61. }
  62. }
  63. }
  64. window.οnlοad=Init;
//当我们点击添加号码的时候将会在通讯录中添加一个联系人,联系人全名为Mobile //Service,所属公司为China Mobile,手机号码为10086,当点击更新号码时,将会//在联系人里添加一个家庭号码,号码为12530,当点击删除号码时,将会删除手机号码
//为10086的所有联系人。
function Init(){
var Add=document.getElementById('add');
var Delete=document.getElementById('delete');
var Update=document.getElementById('update');
Add.addEventListener('click',AddContact,false);
Delete.addEventListener('click',DeleteContact,false);
Update.addEventListener('click',UpdateContact,false);
Widget.PIM.onAddressBookItemsFound = ContactFound;//回调函数
var Operation="";//创建一个字符串变量
function AddContact(){
//创建一个 AddressBookItem类的对象
var contact = new Widget.PIM.AddressBookItem();
//设置联系人的信息
contact.setAttributeValue("fullName", "Mobile Service");
contact.setAttributeValue("company", "China Mobile");
contact.setAttributeValue("mobilePhone", "10086");
//添加一个联系人
Widget.PIM.addAddressBookItem(contact);
alert("Successfully added");
}
function DeleteContact(){
//当要执行删除操作时,将Operation赋值为delete
Operation="delete";
find();
}
function UpdateContact(){
//当要执行更新操作时,将Operation赋值为update
Operation="update";
find();
}
//find函数用来寻找手机号码为10086的所有联系人
function find(){
var total=Widget.PIM.getAddressBookItemsCount()
var contact = new Widget.PIM.AddressBookItem();
contact.setAttributeValue("mobilePhone", "10086");
Widget.PIM.findAddressBookItems(contact, 0, total-1);
}
//使用findAddressBookItems方法后将发生此事件
function ContactFound(addressBookItems){
//遍历所有找到的联系人
for(var value=0;value<addressBookItems.length;value++)
{    //当Operation的值为delete执行删除操作
if(Operation=='delete'){
Widget.PIM.deleteAddressBookItem(addressBookItems[value].addressBookItemId);
}
//当Operation的值为update执行更新操作
if(Operation=='update')
{
var contact = addressBookItems[value];
contact.setAttributeValue("homePhone", "12580");
contact.update();
}
}
if(Operation=='delete'){
alert('Deleted successfully');
}
else{
alert('Updated successfully');
}
}
}
window.οnlοad=Init;
执行效果:
当添加联系人后:
当更新信息后:
添加了一个家庭电话。
 
按下删除按钮后,将删除联系人。
CalendarItem 概要:
CalendarItem 类的对象存储了一个日历项目的内容,内容有:
1,alarmDate 此项目提醒时间
2,alarmed 此项目是否有设置提醒,此为 Boolean 值
3,calendarItemId  此项目的ID
4,eventEndTime  事件结束时间
5,eventName 事件名称
6,eventNotes      事件内容
7,eventRecurrence  事件的提醒模式,由EventRecurrenceTypes 决定
8,eventStartTime   事件开始时间
一个方法:
1,update() 更新日历项目
EventRecurrenceTypes 概要:
EventRecurrenceTypes 为日历项目的提醒模式,一共有七种提醒模式:
1,DAILY  每日提醒
2,EVERY_WEEKDAY 工作日提醒
3,MONTHLY_ON_DAY   每月提醒一次
4,MONTHLY_ON_DAY_COUNT  每月最后一个星期提醒
5,NOT_REPEAT 不重复
6,WEEKLY_ON_DAY  每周提醒
7,YEARLY  每年提醒一次
日历项目操作演示:
建立界面如下:
界面代码:
view plain copy to clipboard print ?
  1. <input type= "button"  value= "添加事件"  id= "add" ><br>
  2. <input type="button"  value= "删除事件"  id= "delete" ><br>
<input type="button" value="添加事件" id="add"><br>
<input type="button" value="删除事件" id="delete"><br>
Js代码:
view plain copy to clipboard print ?
  1. //添加一个事件,和删除一个事件
  2. function Init(){
  3. var Add=document.getElementById('add' );
  4. var Delete=document.getElementById('delete' );
  5. Add.addEventListener('click' ,AddContact, false );
  6. Delete.addEventListener('click' ,DeleteContact, false );
  7. Widget.PIM.onAddressBookItemsFound = ContactFound;
  8. function AddContact(){
  9. var day = new  Date ( 2009 ,  12 ,  25 ,  0 ,  0 ,  0 );
  10. var calendarItem = new  Widget.PIM.CalendarItem();
  11. calendarItem.startTime = day;//设置开始日期
  12. calendarItem.eventName = "Test" ;
  13. calendarItem.eventRecurrence=Widget.PIM.EventRecurrenceTypes.W
  14. EEKLY_ON_DAY;//设置成每周提醒
  15. Widget.PIM.addCalendarItem(calendarItem);
  16. alert("Successfully added" );
  17. }
  18. function DeleteContact(){
  19. var startTime = new  Date ( 2009 ,  1 ,  1 ,  0 ,  0 ,  0 );
  20. var endTime = new  Date ( 2010 ,  1 ,  1 ,  0 ,  0 ,  0 );
  21. //用getCalendarItems方法返回指定时间内所有的事件
  22. var Events = Widget.PIM.getCalendarItems(startTime,endTime);
  23. for (var value= 0 ;value<Events.length;value++)
  24. {   //当事件名为Test时,删除此事件
  25. if (Events[value].eventName== "Test" )
  26. {
  27. Widget.PIM.deleteCalendarItem(Events[value].calendarItemId );
  28. }
  29. }
  30. alert("Deleted successfully" );
  31. }
  32. }
  33. window.οnlοad=Init;
//添加一个事件,和删除一个事件
function Init(){
var Add=document.getElementById('add');
var Delete=document.getElementById('delete');
Add.addEventListener('click',AddContact,false);
Delete.addEventListener('click',DeleteContact,false);
Widget.PIM.onAddressBookItemsFound = ContactFound;
function AddContact(){
var day = new Date (2009, 12, 25, 0, 0, 0);
var calendarItem = new Widget.PIM.CalendarItem();
calendarItem.startTime = day;//设置开始日期
calendarItem.eventName = "Test";
calendarItem.eventRecurrence=Widget.PIM.EventRecurrenceTypes.W
EEKLY_ON_DAY;//设置成每周提醒
Widget.PIM.addCalendarItem(calendarItem);
alert("Successfully added");
}
function DeleteContact(){
var startTime = new Date (2009, 1, 1, 0, 0, 0);
var endTime = new Date (2010, 1, 1, 0, 0, 0);
//用getCalendarItems方法返回指定时间内所有的事件
var Events = Widget.PIM.getCalendarItems(startTime,endTime);
for(var value=0;value<Events.length;value++)
{   //当事件名为Test时,删除此事件
if(Events[value].eventName=="Test")
{
Widget.PIM.deleteCalendarItem(Events[value].calendarItemId );
}
}
alert("Deleted successfully");
}
}
window.οnlοad=Init;
执行效果:
程序所添加的事件
事件名为Test,没有添加事件内容,因为没有指定结束时间,所以默认在一个小时后结束,因为添加事件的时间为周五,所以会在每周的周五提醒。
按下删除事件按钮将删除此事件。
本章总结:
这一章主要介绍了Telephony 类和PIM 类,对他们的基本操作做了演示。希望对大家有所帮助。
作者:
   陈耀政 ophoneSDN帐号:3GLive 邮箱:my.3g.live@gmail.com
http://www.ophonesdn.com/article/show/179

Widget API 接口实例演示(二) ——Telephony类和PIM类相关推荐

  1. api接口 php_PHP关于API接口实例分享

    API就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的 API 而使操作系统去执行应用程序的命令(动作).本文主要和大家分享PHP关于API接口实例,希望能帮助到大家. PHP生成J ...

  2. python实现简单的api接口-对Python实现简单的API接口实例讲解

    get方法 代码实现 # coding:utf-8 import json from urlparse import parse_qs from wsgiref.simple_server impor ...

  3. 简单python脚本实例-对Python实现简单的API接口实例讲解

    get方法 代码实现 # coding:utf-8 import json from urlparse import parse_qs from wsgiref.simple_server impor ...

  4. 微信API接口、微信二次开发API调用

    微信API接口.微信二次开发API调用 微信协议接口调用-加微信好友及通过好友请求 加微信好友 /**       * 微信自动添加好友      * @author wechatno:tangjin ...

  5. php magento 开发,magento2 开发Api接口实例

    magento2 开发Api接口实例 新建一个模块 第一步先创建module.xml初始化模块 模块配置 – etc/module.xml 然后新建Registration 注册模块 – regist ...

  6. 基于Java的Zabbix二次开发-----Zabbix的Api接口实例

    博主之前的文章配置好了Zabbix环境,正常启动Zabbix服务端,并成功监控客户端服务器的情况,如有疑问,下方传送门: centos7下安装Zabbix服务端 Windows下安装Zabbix客户端 ...

  7. PHP API接口实例

    PHP API接口 PHP生成JSON数据 json_encode($value) 方法 (response.php和testapi.php) 通信标准格式: code 状态码   message 提 ...

  8. 京东高效转链API接口—商品优惠券二合一转链—京东联盟优惠券如何转链?

    API接口说明: 将您的联盟信息.商品SKU以及优惠券链接进行转链,返回商品的二合一领券下单链接,转链后的结果可进行推广 应用场景: 应用于导购平台内的商品转链 操作案例: 联盟ID:随便一个京东联盟 ...

  9. 淘宝/天猫同款商品搜索API接口详细演示

    item_search_samestyle-搜索同款的商品 [查看演示] API测试工具 注册开通 onebound.taobao.item_search_samestyle 公共参数 请求地址: h ...

最新文章

  1. 强烈推荐8个值得下载的神仙软件,每一个都让人惊喜
  2. 【Verilog HDL 训练】第 13 天(存储器、SRAM)
  3. Qt: QTimer和QThread
  4. 倒计时3天|阿里云数据库创新上云峰会亮点剧透
  5. python打卡记录去重_Python笔记记录
  6. rgb 灰色_金属+RGB+无线,我要买爆这款海盗船VIRTUOSO鉴赏家游戏耳机
  7. mysql内连接和交叉连接_MySQL中的内连接、外连接、交叉连接
  8. 存储过程和函数的区别?
  9. PHP中CURL方法curl_setopt()函数的一些参数
  10. codeforces332B - Maximum Absurdity 线段数 or dp
  11. IIS配置文件上传大小限制
  12. Kazrog AmpCraft 1992 for Mac - 放大器建模插件
  13. 一种排序NYOJ 8
  14. matlab信号处理——数据处理基础
  15. 墨画子卿第二章第4节:三招
  16. VC环境中获取窗体标题栏的位置和高度
  17. 怎么判断一篇英文论文是不是综述
  18. [IOS]hitTest的作用与用法【转】
  19. jQuery的属性,位置,元素操作
  20. 千呼万唤,小灰的新书出版了!

热门文章

  1. RGB与Depth融合方法总结
  2. 【veriog】正向计时器设计(FPGA,秒表,时钟,正向计时)
  3. 苹果x与苹果xs的区别_x与xs的区别
  4. prolog matlab,Prolog语言(耐心看完,你就入门了).ppt
  5. 汽车行业数据存储越发复杂?群晖备份存储方案为您支招
  6. 深度技术GHOSTXP SP3快速装机专业版V2011.07
  7. 《越狱》第二季过后,剧情跌宕起伏,各角色们的命运也各有不同,现公布如下
  8. Excel中Vlookup公式和IFError公式的使用
  9. excel 第8讲:if函数逻辑判断
  10. 甘肃省计算机专业和电子专业学院,甘肃电子工程技术学校