×
Namespaces

Variants
Actions

如何在N9,N950上发送短信以及彩信

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

代码示例
文章
cuizhan 在 20 Sep 2011 创建
最后由 hamishwillee 在 13 Jun 2012 编辑

Contents

介绍

本文简单介绍如何实现在N9,N950上发送短信以及彩信。

基本思路

1. 创建一个联系人。
2. 创建短信头,以及短信内容。
3. 组装短信。
4 发送。

具体步骤以及注意事项

必要的头文件

#include <QDBusMessage>
#include <TelepathyQt4/Message>
#include <TelepathyQt4/Types>
#include <TelepathyQt4/MessageContentPartList>
#include <TelepathyQt4/Constants>
#include <TelepathyQt4/Account>
#include <TelepathyQt4/ContactMessenger>

第一步,创建联系人

const QString mmsAccountPath = QLatin1String ("/org/freedesktop/Telepathy/Account/mmscm/mms/mms0");
AccountPtr account = Account::create(TP_QT4_ACCOUNT_MANAGER_BUS_NAME, mmsAccountPath);
// please change the contact identifier "+111111" to other value if needed
//发送短信会用到
ContactMessengerPtr cm = ContactMessenger::create(account, "+111111");

第二步,构建短信
一条短信由短信头和一个或多个短信内容组成。最后打包成一条短信发出去

//短信头
MessagePart header;
//文字短信内容
MessagePart contentText;
//彩信,可以是图片,也可以是视频,或其他附件
MessagePart contentImage;
//打包后的短信
MessagePartList message;

例如,短信头,包含了发送地址,标题,信息

header.insert("message-sender", QDBusVariant(1));
header.insert("message-type", QDBusVariant(0));
//please change the 8612345678901 as your receiver
header.insert("message-to", QDBusVariant("+8612345678901"));
header.insert("message-subject", QDBusVariant("test message from Finland"));
header.insert("x-mms-message-class", QDBusVariant("Informational"));

普通文字内容

// text part
contentText.insert("content", QDBusVariant("Hi, This is plain text message content.I'm testing the telepathy-qt4 api on N9 and this is a test message. thx."));
contentText.insert("content-type", QDBusVariant("text/plain"));

带图片的彩信

// image part
//文件路径
contentImage.insert("content-location", QDBusVariant("/home/user/MyDocs/DCIM/nokia-logo.jpg"));
contentImage.insert("content-type", QDBusVariant("image/jpeg"));
//文件大小
contentImage.insert("size", QDBusVariant(82821));

这里要注意三点:

a. 在做自己的应用程序时,一定要保证路径正确,调试此程序,需要手动拷贝nokia-logo.jpg到DCIM路径下。
b. 文件大小一定要正确,否则会发送失败。
c. 如果还是发送失败,请联系服务商确认最大附件大小。

第三步,组装短信

message.append(header);
message.append(contentText);
message.append(contentImage);

第四步,包装短信并发送

//需要包装一下message
MessageContentPartList messageContentList(message);
cm->sendMessage(messageContentList);

示例代码

File:Qmltelepathyexample-v2.zip

特别感谢

在这里特别感谢芬兰诺基亚,Yu Bin同学提供的支持和帮助。

相关链接

This page was last modified on 13 June 2012, at 13:59.
39 page views in the last 30 days.