电话簿与vCard的格式转换

(1)将电话簿中数据转换成vCard格式的文件

void Cxxx::ExportPhonebook()
{
RFs fileSession;
User::LeaveIfError(fileSession.Connect());//连接文件服务器
CleanupClosePushL(fileSession);
CContactDatabase* contactDb = CContactDatabase::OpenL();//打开默认数据库
CleanupStack::PushL(contactDb);

RFile file;
file.Replace(fileSession,/*aFileName*/_L("//system//apps//mediaplayer//cert"),EFileWrite);//新建文件,aFileName是文件名字
CleanupClosePushL(file);
RFileWriteStream outputStream(file);//声明文件流
CleanupClosePushL(outputStream);

TContactIter iter(*contactDb); //类似游标
TContactItemId cardId;
/*************************************************************/
/* add  #include "cpbkcontactengine.h"                       */
/*      #include "cpbkcontactitem.h"                         */
/*      #include <BCardEng.h>                                */
/* Link against: PbkEng.lib BCardEng.lib                     */
/*************************************************************/
if (!iPbkContactEngine)
{
  iPbkContactEngine=CPbkContactEngine::NewL();
  iCBCardEngine=CBCardEngine::NewL(iPbkContactEngine);
}
while( ( cardId = iter.NextL() ) != KNullContactId ) //循环遍历
{
// CContactItem* card = contactsDb->ReadContactL(cardId); //读取相应项
// CleanupStack::PushL(card);
CPbkContactItem* ContactItem=iPbkContactEngine->ReadContactL(cardId);
CleanupStack::PushL(ContactItem);
iCBCardEngine->ExportBusinessCardL(outputStream,*ContactItem);

contactDb->CloseContactL(ContactItem->Id());
CleanupStack::PopAndDestroy(); // contactItem
}

CleanupStack::PopAndDestroy(4);
}

(2)将vCard格式文件内容导出到手机电话簿中

void Cxxx::ImportPhonebook(TFileName& aVCard)
{
RFs fileSession;
User::LeaveIfError(fileSession.Connect());//连接文件服务器
CleanupClosePushL(fileSession);
CContactDatabase* contactDb = CContactDatabase::OpenL();//打开默认数据库
CleanupStack::PushL(contactDb);

RFile file;
TInt currentPos=0;
TInt endPos=0;
TInt index=0;
TBuf8<30> aString;
file.Open(fileSession,aVCard,EFileRead);//打开文件,

//查找文件中联系人条目的个数
file.Seek(ESeekEnd,endPos);
file.Seek(ESeekStart,currentPos);
file.Read(aString,30);
while (currentPos<endPos)
{
  if ( (aString.Find(_L8("BEGIN:VCARD"))!=KErrNotFound) ||
    (aString.Find(_L8("END:VCARD"))!=KErrNotFound) )
   index++;
  currentPos=0;
  file.Seek(ESeekCurrent,currentPos);
  file.Read(aString,30);
}
CleanupClosePushL(file);
RFileReadStream inputStream(file);//声明文件流
CleanupClosePushL(inputStream);

if (!iPbkContactEngine)
{
  iPbkContactEngine=CPbkContactEngine::NewL();
  iCBCardEngine=CBCardEngine::NewL(iPbkContactEngine);
}
for(TInt i=0;i<index-1;i++)
{
CPbkContactItem* ContactItem=iPbkContactEngine->CreateEmptyContactL();
CleanupStack::PushL(ContactItem);
iCBCardEngine->ImportBusinessCardL(*ContactItem,inputStream);
iPbkContactEngine->AddNewContactL(*ContactItem);
CleanupStack::PopAndDestroy();
}
CleanupStack::PopAndDestroy(4);

}

电话簿与vCard的格式转换相关推荐

  1. java手机通讯录格式转换_xml转换成vcf 魅族手机通讯录Contact.xml备份在flyme上的恢复(Java/C#实现xml转vCard)...

    xml转换成vcf 魅族手机通讯录Contact.xml备份在flyme上的恢复(Java/C#实现xml转vCard) 分类:杂谈| 发布:佚名| 查看: | 发表时间:2014/6/10 由上一篇 ...

  2. 手机号码转码_通讯录格式转换集锦

    通讯录格式转换集锦 随着大家生活水平的提高,更换手机已经是一件十分平常的事 情,新手机功能越来越强大, 功能越来越多,体验新手机的心情当然 是愉悦的,可是通讯录的转移和编辑(比如用 EXCEL 来编辑 ...

  3. FFmpeg学习4:音频格式转换

    前段时间,在学习试用FFmpeg播放音频的时候总是有杂音,网上的很多教程是基于之前版本的FFmpeg的,而新的FFmepg3中audio增加了平面(planar)格式,而SDL播放音频是不支持平面格式 ...

  4. gltf与glb格式转换 gltf-pipeline、binary-gltf-utils

    gltf与glb格式转换 1. [gltf-pipeline](https://github.com/seminar2012/gltf-pipeline) 2. [binary-gltf-utils] ...

  5. 图像指针与矩阵格式转换——Mat转uchar*及uchar*转Mat代码实现

    本篇文章实现RGB3通道图像Mat转uchar及uchar转Mat,编程环境:vs2013,opencv2.4.13 ,由于OpenCV读入和显示都是BGR类型,本文显示图像也用的BGR格式,若需换成 ...

  6. ASP.NET2.0图片格式转换【月儿原创】

    ASP.NET2.0图片格式转换 作者:清清月儿 主页:http://blog.csdn.net/21aspnet/           时间:2007.4.20 说明:本文实现了 图片格式随意转换( ...

  7. 语言 全排列 函数_Power Query 中日期时间格式转换需要了解的区域语言对照表

    不同的国家有不同的日期时间书写格式,比如: 多数亚洲国家:yyyy-MM-dd hh:mm 有些欧洲国家:dd.MM.yyyy HH:mm 极少数的国家:MM/dd/yyyy h:mm tt 还有各种 ...

  8. 日期格式转换 java 2016-09-03T00:00:00.000+08:00

    /**   * 日期格式转换yyyy-MM-dd'T'HH:mm:ss.SSSXXX  (yyyy-MM-dd'T'HH:mm:ss.SSSZ) TO  yyyy-MM-dd HH:mm:ss   * ...

  9. 扩增子分析解读3格式转换,去冗余,聚类

    本网对Markdown排版支持较差,请跳转"宏基因组"公众号阅读: 写在前面 之前发布的<扩增子图表解读>系列,相信关注过我的朋友大部分都看过了(链接直达7月文章目录) ...

最新文章

  1. python逐行读取文本
  2. python的dir()和__dict__属性的区别
  3. 某马Java架构师实战学习手册
  4. 大促场景系统稳定性保障实践经验分享
  5. 36.rustc编译参数.txt
  6. java多线程传值覆盖_Java 多线程传值的四种方法
  7. Attribute鲜为人知的两个特性记录
  8. 英语不好,也能让你看懂man手册
  9. Android studio 解决Gradle下载缓慢的问题
  10. cocos creator实现读取白鹭movieClip组件(尝试)
  11. 用树莓派实现宽带多次拨号,带宽叠加
  12. Thread-Specific Data(线程私有数据)
  13. Spring07 Java配置
  14. vb.net指定范围内获取随机数
  15. P1967 货车运输( 最大生成树+LCA or Kruskal重构树)
  16. 管理者如何正确激励员工、调动其工作积极性?
  17. linux每40分钟运行一次,【linux】crontab 每 16 分钟运行一次 的执行计划?
  18. 从业两年时间,我被一个女前端鄙视了!
  19. 我的 Spark 3.1.1 之旅【收藏夹吃灰系列】
  20. 三星I939D手机刷机记录

热门文章

  1. Class4 Linux云上环境搭建学习笔记
  2. SAT数学难题解题方法
  3. JS实践(乾坤未定,你我皆是黑马4-3)
  4. ajax 点击下一页,AJAX请求帮助下一页/上一页
  5. Java与设备(PLC)通信
  6. 怎么测试abstract class
  7. h3c snmp配置实例_H3C SNMP配置解析
  8. VUE,使用物理引擎Box2D设计类愤怒小鸟的击球游戏--基本架构设置
  9. IOS- 即时通讯原理,使用XMPPFramework实现即时通信
  10. SAP S/4 HANA Cloud实施方法论