0

我是 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。

4

1 回答 1

0

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

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

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

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

编辑:不知何故,我能够以自签名的方式运行它。但我不知道它到底是怎么回事。我在做什么:

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

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

于 2011-05-05T19:28:29.090 回答