Discussion Board

Results 1 to 10 of 10
  1. #1
    Registered User Alekzandr's Avatar
    Join Date
    Nov 2009
    Posts
    41
    Помогите пожалуйста поймать событие чтения смс в Inbox.
    EMsvEntriesChanged возникает 2 раза при приходе смс и 1 раз при переходе смс из непрочитанного состояния в прочитанное. Как поймать этот переход из непрочитанного состояния в прочитанное в HandleSessionEventL?

    Нашел на форуме:
    "You could try catching the changed event, and see whether it was changed from being unread to read one, thus no real way on just getting the opened event really."
    Наверное, да, просто событие открытия поймать нельзя явно, но мне главное поймать именно открытие при котором непрочитанная смс становится прочитанной.
    Last edited by Alekzandr; 2010-02-03 at 17:23.

  2. #2
    Registered User Alekzandr's Avatar
    Join Date
    Nov 2009
    Posts
    41
    Можно ли как вариант при всех срабатываниях EMsvEntriesChanged проверять статус смс, и как за нужное срабатывание принять - то, когда статус станет Read?

  3. #3
    Registered User Alekzandr's Avatar
    Join Date
    Nov 2009
    Posts
    41
    Во всех примерах, что я видел в EMsvEntriesChanged в HandleSessionEventL делается проверка:
    iNewMessageId == entries->At(0)
    то есть как я понял в EMsvEntriesChanged анализируют только последнюю полученную смс.
    Можно как-то получить доступ в EMsvEntriesChanged именно к той смс, для которой EMsvEntriesChanged возникает?
    Подскажите пожалуйста как, очень нужна помощь.

  4. #4
    Nokia Developer Moderator truf's Avatar
    Join Date
    Jun 2007
    Location
    Moscow, Russia
    Posts
    1,355
    Quote Originally Posted by Alekzandr View Post
    Можно как-то получить доступ в EMsvEntriesChanged именно к той смс, для которой EMsvEntriesChanged возникает?
    virtual void HandleSessionEventL(TMsvSessionEvent aEvent, TAny *aArg1, TAny *aArg2, TAny *aArg3);
    Description
    Indicates an event has occurred.

    The type of event is indicated by the value of aEvent. The interpretation of the TAny arguments depends on this type.
    EMsvEntriesChanged One or more index entries have been changed.

    aArg1 is a CMsvEntrySelection of the index entries. aArg2 is the TMsvId of the parent entry.
    Т.е. в entries у вас массив (по сути - CArrayFixFlat<TMsvId>) идентификаторов ВСЕХ сообщений, для которых верно событие.

    То что в примере берут [0] элемент - лчное дело того, кто этот пример написал. Но в тех примерах, в которые я заглядывал, в таких случаях выполняется пробег по всем элементам entries и для каждого вызывается метод обработчик.

  5. #5
    Nokia Developer Moderator truf's Avatar
    Join Date
    Jun 2007
    Location
    Moscow, Russia
    Posts
    1,355
    EMsvEntriesChanged высылается после того, как сообщение было изменено. Следовательно, нужные вам сообщения можно отловить следующим образом: ловить их первое появление в inbox'е и запоминать их uid. Ну или поискать у них какое нибудь неиспользуемое поле, и поставить там специальную метку. А при EMsvEntriesChanged соответственно эту метку или id сверять.

    UPD: Для хранения метки можно использовать один из iMtmData в TMsvEntry
    Last edited by truf; 2010-02-04 at 06:42.

  6. #6
    Registered User Alekzandr's Avatar
    Join Date
    Nov 2009
    Posts
    41
    Т.е. в entries у вас массив (по сути - CArrayFixFlat<TMsvId>) идентификаторов ВСЕХ сообщений, для которых верно событие.
    Когда открывается первый раз определенное сообщение, то ведь только у него меняется статус непрочитанного на прочитанное. Получается, что в массиве должна быть только одна запись? Вы написали, что для ВСЕХ, а остальные это какие?

  7. #7
    Nokia Developer Moderator truf's Avatar
    Join Date
    Jun 2007
    Location
    Moscow, Russia
    Posts
    1,355
    Там может в 99% случаев быть одна запись. Но теоретически там могут быть несколько. Например пользователь зашел во входящие, отметил все сообщения и пометил как непрочитанные разом.

  8. #8
    Registered User Alekzandr's Avatar
    Join Date
    Nov 2009
    Posts
    41
    Если ограничиться тем, что пользователь будет делать смс прочитанными по одной, то получается можно ограничится только проверкой статуса при возникновении EMsvEntriesChanged, чтобы статус стал Прочитана (чтобы поймать именно тот EMsvEntriesChanged, который возникает при открытии, а не те два, возникающих при приходе смс)?
    Я не совсем понял в чем цель хранения uid'ов непрочитанных смс. Или одновременно с uid'ом хранить номер запуска EMsvEntriesChanged для каждой смс, и как только он будет больше двух, следовательно это именно открытие смс, а не приход?

  9. #9
    Nokia Developer Moderator truf's Avatar
    Join Date
    Jun 2007
    Location
    Moscow, Russia
    Posts
    1,355
    Ну это же чистая логика.
    Не надо считать EMsvEntriesChanged. Вы на каждом EMsvEntriesChanged проверяйте, стало ли сообщение прочитанным. Если стало - значит это ваш *третий* EMsvEntriesChanged. Чтобы отличить сообщение, которое стало прочитанным впервые, от сообщений, которые уже были прочитанными, но изменились, нужны uid'ы. Но лучше метить его через iMtmData.

  10. #10
    Registered User Alekzandr's Avatar
    Join Date
    Nov 2009
    Posts
    41
    truf, спасибо! Вы очень помогли понять что к чему)

Similar Threads

  1. why it is moving only last sms in inbox?......
    By bharats in forum Symbian Networking & Messaging (Closed)
    Replies: 4
    Last Post: 2010-11-24, 09:11
  2. receiving a message both in Inbox and my midlet
    By vinhtung in forum General Messaging
    Replies: 0
    Last Post: 2009-03-18, 03:11
  3. About get a Sms from Inbox!
    By starryshen in forum Symbian
    Replies: 5
    Last Post: 2006-05-15, 07:53
  4. How to get list of subfolders under Inbox
    By Gayathri Lokesh in forum Symbian Networking & Messaging (Closed)
    Replies: 0
    Last Post: 2006-03-25, 06:48
  5. About get a Sms from Inbox!
    By starryshen in forum Symbian C++
    Replies: 0
    Last Post: 2004-04-13, 06:06

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Nokia Developer aims to help you create apps and publish them so you can connect with users around the world.

京ICP备05048969号  © Copyright Nokia 2013 All rights reserved