使用诺基亚Qt在S60发送消息(诺基亚E72)

时间:2011-05-05 10:57:14

标签: qt nokia messages qt-mobility

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

我能够编译源代码,并且可以在模拟器上进行测试。但是当我将它部署到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()返回一个空列表。

到底是什么帐户?在模拟器中它是短信和彩信。但为什么设备是空的?代码没有初始化管理器,所以我无法跟踪它是如何工作的。哦,顺便说一句,manager是一个QMessageManager实例。我应该怎么做才能在设备上工作?

我正在使用带有QtMobility版本1.0.2的诺基亚Qt SDK,如果这有帮助。

1 个答案:

答案 0 :(得分:0)

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

我在这里使用Open Signed:https://www.symbiansigned.com/app/page/public/openSignedOnline.do来获取文件签名。签名文件后,将签名文件安装到设备,程序可以访问操作系统,QMessageManager的queryAccounts()不会返回空结果。

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

我认为当我需要先测试它需要先签名的设备时,这有点烦人。离线需要一个不是免费的许可证,而我只是在学习。 *叹

EDITED: 不知怎的,我可以用自签名运行它。但我不确切知道它是怎么回事。我在做什么:

  1. 使用QtCreator运行自签名应用程序。错误:无法从计算机复制到设备
  2. 重启设备
  3. 使用QtCreator运行自签名应用程序。错误:一般操作系统相关
  4. 使用PC套件手动安装应用程序。许多警告。
  5. 我忘了接下来会发生什么   - 尝试使用QtCreator运行。工作良好。   - 或先卸载PC套件。