×
Namespaces

Variants
Actions
(Difference between revisions)

使用Qt Mobility Messaging API发送短信

From Nokia Developer Wiki
Jump to: navigation, search
flycarl (Talk | contribs)
hamishwillee (Talk | contribs)
m (Text replace - "Category:S60" to "Category:Symbian")
 
(13 intermediate revisions by 2 users not shown)
Line 1: Line 1:
这演示如何用Qt Mobility的Messaging API发送短信,
+
[[Category:Code Examples]][[Category:Symbian]][[Category:Lang-Chinese]][[Category:Qt Mobility]][[Category:Messaging]]
{{CodeSnippet
+
{{ArticleMetaData
|id=...
+
|language=Lang-Chinese
 
|platform=S60 3rd Edition, FP1, FP2<br>S60 5th Edition Symbian^3
 
|platform=S60 3rd Edition, FP1, FP2<br>S60 5th Edition Symbian^3
 
|devices= Nokia 5800 and N8.
 
|devices= Nokia 5800 and N8.
|category=Qt for Symbian
+
|creationdate=20101118
|subcategory= Qt Mobility API
+
|creationdate=Nov 18, 2010
+
 
|keywords= QMessageService, QMessage, Chinese
 
|keywords= QMessageService, QMessage, Chinese
 +
|sourcecode=[[Media:SendSMS.zip]]
 +
|installfile= <!-- Link to installation file (e.g. [[Media:The Installation File.sis]]) -->
 +
|sdk=<!-- SDK(s) built and tested against (e.g. [http://linktosdkdownload/ Nokia Qt SDK 1.1]) -->
 +
|devicecompatability=<!-- Compatible devices (e.g.: All* (must have GPS) ) -->
 +
|signing=<!-- Empty or one of Self-Signed, DevCert, Manufacturer -->
 +
|capabilities=NetworkServices, LocalServices, ReadUserData, WriteUserData, UserEnvironment, ReadDeviceData, WriteDeviceData
 +
|author=[[User:Flycarl]]
 
}}
 
}}
  
Line 15: Line 20:
 
这里的代码演示如何用Qt Mobility的Messaging API发送短信,自Qt Mobility 1.1.0可以发送中文短信。
 
这里的代码演示如何用Qt Mobility的Messaging API发送短信,自Qt Mobility 1.1.0可以发送中文短信。
 
代码需要以下能力 [[NetworkServices]] [[LocalServices]] [[ReadUserData]] [[WriteUserData]] [[UserEnvironment]] [[ReadDeviceData]] [[WriteDeviceData]] 。自签名不够用,至少需要 [[Developer certificate | 开发者签名]]  ,也可以用 [[Open Signed Online]]来测试。
 
代码需要以下能力 [[NetworkServices]] [[LocalServices]] [[ReadUserData]] [[WriteUserData]] [[UserEnvironment]] [[ReadDeviceData]] [[WriteDeviceData]] 。自签名不够用,至少需要 [[Developer certificate | 开发者签名]]  ,也可以用 [[Open Signed Online]]来测试。
 
  
 
==准备条件==
 
==准备条件==
Line 25: Line 29:
 
在pro文件中增加这些行
 
在pro文件中增加这些行
  
<code cpp>
+
<code cpp-qt>
 
CONFIG += mobility
 
CONFIG += mobility
 
MOBILITY = messaging
 
MOBILITY = messaging
Line 43: Line 47:
 
==代码==
 
==代码==
 
下面的代码片段演示了如何发短信,当使用Mobility API 头文件时,需要使用<font color ="red">QTM_USE_NAMESPACE</font>,否则会找不到头文件;当前置声明时,需要用 <font color ="red">QTM_BEGIN_NAMESPACE</font> 和 <font color="red">QTM_END_NAMESPACE</font> 将前置声明“包围”,否则会出编译错误。
 
下面的代码片段演示了如何发短信,当使用Mobility API 头文件时,需要使用<font color ="red">QTM_USE_NAMESPACE</font>,否则会找不到头文件;当前置声明时,需要用 <font color ="red">QTM_BEGIN_NAMESPACE</font> 和 <font color="red">QTM_END_NAMESPACE</font> 将前置声明“包围”,否则会出编译错误。
<code cpp>
+
<code cpp-qt>
 
#include <QMessageService>
 
#include <QMessageService>
 
#include <QMessage>
 
#include <QMessage>
Line 51: Line 55:
 
</code>
 
</code>
 
这里的代码片段使用了一个 有预设字符的lineEdit来存放要发送的字符,可以是中文字符,这样做避免了关于字符编码的冗长讨论。实际操作中也不建议将中文字符硬编码在代码里,需要使用中文字符的地方应遵循[[Qt的国际化和本地化]]的操作。
 
这里的代码片段使用了一个 有预设字符的lineEdit来存放要发送的字符,可以是中文字符,这样做避免了关于字符编码的冗长讨论。实际操作中也不建议将中文字符硬编码在代码里,需要使用中文字符的地方应遵循[[Qt的国际化和本地化]]的操作。
<code cpp>
+
<code cpp-qt>
 
#include "mainwindow.h"
 
#include "mainwindow.h"
 
#include "ui_mainwindow.h"
 
#include "ui_mainwindow.h"
Line 85: Line 89:
 
</code>
 
</code>
 
<br>
 
<br>
<code cpp>
+
QMessageService 调用symbian的API发送短信,这里的构造函数使用AO异步实现,不能把这里的service做成局部变量,否则有可能应为构造没完成,导致调用send方法时出错,报“A data abort exception has occurred”
 +
<code cpp-qt>
 
#ifndef MAINWINDOW_H
 
#ifndef MAINWINDOW_H
 
#define MAINWINDOW_H
 
#define MAINWINDOW_H
Line 97: Line 102:
 
     class MainWindow;
 
     class MainWindow;
 
}
 
}
 
 
  
 
class MainWindow : public QMainWindow
 
class MainWindow : public QMainWindow
Line 118: Line 121:
 
</code>
 
</code>
 
==下载Demo==
 
==下载Demo==
 
+
[[File:SendSMS.zip]][[Category:MeeGo Harmattan]] [[Category:Symbian]]
==参考链接==
+
*[http://www.devdiv.net/blog/space-9147-do-blog-id-2072.html 用QMessageService发送中文短信的探讨了解QT Mobiblty的设计]
+
[[Category:Code Examples]][[Category:S60]][[Category:Lang-CN]][[Category:CN Qt for Symbian]]
+

Latest revision as of 03:01, 8 May 2013

Article Metadata

代码示例
测试基于
设备:: Nokia 5800 and N8.

兼容于
平台: S60 3rd Edition, FP1, FP2
S60 5th Edition Symbian^3
Symbian

平台安全性
能力: NetworkServices, LocalServices, ReadUserData, WriteUserData, UserEnvironment, ReadDeviceData, WriteDeviceData

文章
关键词: QMessageService, QMessage, Chinese
flycarl 在 18 Nov 2010 创建
最后由 hamishwillee 在 08 May 2013 编辑


Contents

[edit] 简介

这里的代码演示如何用Qt Mobility的Messaging API发送短信,自Qt Mobility 1.1.0可以发送中文短信。 代码需要以下能力 NetworkServices LocalServices ReadUserData WriteUserData UserEnvironment ReadDeviceData WriteDeviceData 。自签名不够用,至少需要 开发者签名 ,也可以用 Open Signed Online来测试。

[edit] 准备条件

[edit] 编辑pro文件

在pro文件中增加这些行

CONFIG += mobility
MOBILITY = messaging
 
symbian {
 
TARGET.CAPABILITY = NetworkServices \
LocalServices \
ReadUserData \
WriteUserData \
UserEnvironment \
ReadDeviceData \
WriteDeviceData
}

[edit] 代码

下面的代码片段演示了如何发短信,当使用Mobility API 头文件时,需要使用QTM_USE_NAMESPACE,否则会找不到头文件;当前置声明时,需要用 QTM_BEGIN_NAMESPACEQTM_END_NAMESPACE 将前置声明“包围”,否则会出编译错误。

#include <QMessageService>
#include <QMessage>
 
// Use Qt Mobility API namespace
QTM_USE_NAMESPACE

这里的代码片段使用了一个 有预设字符的lineEdit来存放要发送的字符,可以是中文字符,这样做避免了关于字符编码的冗长讨论。实际操作中也不建议将中文字符硬编码在代码里,需要使用中文字符的地方应遵循Qt的国际化和本地化的操作。

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessage>
// Use Qt Mobility API namespace
QTM_USE_NAMESPACE
 
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
service = new QMessageService(this);
connect(ui->sendButton,SIGNAL(clicked()),this,SLOT(sendMessage()));
}
 
void MainWindow::sendMessage()
{
QMessage message;
QMessageAddressList toList;
QMessageAddress::Type addrType(QMessageAddress::Phone);
toList.append(QMessageAddress(addrType, ui->numberEdit->text()));//电话号码//这里可以设置群以号码
message.setType(QMessage::Sms);//短信类型
message.setTo(toList);
message.setBody(ui->messageEdit->text()); //设置短信内容为lineEdit中的字符,支持中文
service->send(message);
}
 
MainWindow::~MainWindow()
{
delete ui;
}


QMessageService 调用symbian的API发送短信,这里的构造函数使用AO异步实现,不能把这里的service做成局部变量,否则有可能应为构造没完成,导致调用send方法时出错,报“A data abort exception has occurred”

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
#include <QMessageService>
 
QTM_USE_NAMESPACE
 
namespace Ui {
class MainWindow;
}
 
class MainWindow : public QMainWindow
{
Q_OBJECT
 
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
public slots:
void sendMessage();
 
private:
Ui::MainWindow *ui;
QMessageService *service;
};
 
#endif // MAINWINDOW_H

[edit] 下载Demo

File:SendSMS.zip

This page was last modified on 8 May 2013, at 03:01.
342 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×