我是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,如果这有帮助。
答案 0 :(得分:0)
好的,我得到了答案。问题不在于应用程序或qt。但是认证。 QMessageManager以某种方式需要访问操作系统。它在* .pro文件中描述,位于symbian:TARGET.CAPABILITY。这就是所谓的能力。并且某些功能无法自签名,这是项目设置中的默认值。需要签名。
我在这里使用Open Signed:https://www.symbiansigned.com/app/page/public/openSignedOnline.do来获取文件签名。签名文件后,将签名文件安装到设备,程序可以访问操作系统,QMessageManager的queryAccounts()不会返回空结果。
就是这样。并且可以发送消息。
我认为当我需要先测试它需要先签名的设备时,这有点烦人。离线需要一个不是免费的许可证,而我只是在学习。 *叹
EDITED: 不知怎的,我可以用自签名运行它。但我不确切知道它是怎么回事。我在做什么:
我忘了接下来会发生什么 - 尝试使用QtCreator运行。工作良好。 - 或先卸载PC套件。