2011-05-05 115 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