2011-05-05 126 views
0

发送消息我是新来的Qt,并尝试使用QtMobility的发送消息。我在这个链接中使用示例: http://doc.qt.nokia.com/qtmobility/writemessage.html使用诺基亚的Qt在S60(诺基亚E72)

我能够编译源代码,并且可以在模拟器上进行测试。但是当我将它部署到E72时,程序失败。因为它找不到任何可用的帐户。问题就出在这个代码:

// Find the list of available accounts and add them to combo box 
foreach (const QMessageAccountId &id, manager.queryAccounts()) { 
    QMessageAccount account(id); 
    ... 
} 

if (accountDetails.isEmpty()) { 
    QMessageBox::warning(0, tr("Cannot send"), tr("No accounts are available to send with!")); 
    QCoreApplication::instance()->quit(); 
} else { 
    accountCombo->setCurrentIndex(0); 
} 

的代码在设备上输入(accountDetails.isEmpty()),但它是好的,在仿真时。所以manager.queryAccounts()返回一个空列表。

到底是什么账户?在模拟器中它是SMS和MMS。但为什么在设备是空的?该代码不初始化管理器,所以我不能跟踪它是如何工作的。哦,顺便说一下,管理器是一个QMessageManager实例。我该怎么做,这是在设备上工作?

我使用Qt的诺基亚SDK和QtMobility的1.0.2版本,如果是这样的帮助。

+0

该路径显示Qt Mobility 1.0 beta,这是相当古老的,以及测试版。我没有时间研究这个问题,但有一点可以尝试http://doc.qt.nokia.com/qtmobility/writemessage.html中的代码,即最新版本。 – Lucian 2011-05-05 12:01:47

+0

另外请确保指定您编译和运行的Qt和Qt Mobility版本。 – Lucian 2011-05-05 12:02:21

+0

我有Qt Mobility 1.0.2,我用新的代码改变了我的代码。但是它仍然不起作用:(我正在使用诺基亚Qt SDK,而我的设备使用S60功能包2.是否有问题? – dieend 2011-05-05 13:02:00

回答

0

好的,我得到了答案。问题不在于应用程序或qt。但是认证。 QMessageManager以某种方式需要访问操作系统。它在* .pro文件中描述,位于symbian:TARGET.CAPABILITY。这就是所谓的能力。并且某些功能不能在项目设置中默认的自签名。这是需要签署的。

我用开放签字的位置:https://www.symbiansigned.com/app/page/public/openSignedOnline.do得到签署的文件。文件签名后,将签名的文件安装到设备上,程序可以访问操作系统,并且QMessageManager的queryAccounts()不会返回空结果。

就是这样。消息可以发送。

我觉得这是一种恼人的,当我需要它考到我需要先签署设备。离线需要一个不是免费的许可证,而我只是在学习。 *感叹

编辑: 不知怎的,我能够使用自签名运行。但我不知道它究竟如何。我在做什么:

  1. 使用QtCreator运行自签名应用程序。错误:无法从计算机复制到设备
  2. 重启设备
  3. 使用QtCreator运行自签名应用程序。错误:与操作系统相关的一般问题
  4. 使用PC套件手动安装应用程序。许多警告。

我忘了接下来会发生什么 - 尝试使用QtCreator运行。工作正常。 - 或者先用PC套件卸载。

+0

http://www.forum.nokia.com/document/Mobile_Hands-on_Labs/Qt/MobilityMessaging/这个例子在没有签名的情况下在N8中为我工作 – 2011-05-06 06:10:18

+0

从这里可以学到一个教训:如果你无法获得一个devcert Symbian Signed,可以从Ovi P​​ublish中获得一个,它将消除许多与签名要求相关的问题,并为您提供更多的实验自由。 – Lucian 2011-05-06 07:18:32