.NET i takie tam

Przechwytywanie wiadomości SMS

with 11 comments

Windows Mobile API pozwala nam przechwytywać przychodzące wiadomości tekstowe, jest to bardzo proste:

// dodajemy wymagane referencje
using Microsoft.WindowsMobile.PocketOutlook;
using Microsoft.WindowsMobile.PocketOutlook.MessageInterception;

// deklarujemy obiekt monitorujący
MessageInterceptor sms = new MessageInterceptor();

// określamy filtrowanie, tylko wiadomości spełniające ten warunek
// będą przechwytywane przez naszą aplikacje
sms.MessageCondition = new MessageCondition(
  MessageProperty.Body,
  MessagePropertyComparisonType.StartsWith, "#D#", true);

// określmy co się sanie z naszą informacją jak ją już przechwycimy
// w tym przypadku tylko nasza aplikacja będzie wiedziała o
// otrzymanej informacji
sms.InterceptionAction = InterceptionAction.NotifyAndDelete;

// określamy metodę którą mamy wykonać jak już przechwycimy
// wiadomość
sms.MessageReceived +=
  new MessageInterceptorEventHandler(ms_MessageReceived);

void sms_MessageReceived(object sender,
                         MessageInterceptorEventArgs e)
{
    // dobrze jest sprawdzić typ wiadomości, jak nakazie można
    // przechwytywać tylko SMS'y ale kto wie może, wkrótce
    // będzie można obsługiwać MMS'y etc.
    if(e.Message is SmsMessage)
    {
        SmsMessage sms = (SmsMessage)e.Message;

        // robimy co musimy
    }
}

Trochę dziwi mnie fakt, że MessageInterceptor jest umieszczony w przestrzeni nazw PocketOutlook a nie Telephony co, przynajmniej dla mnie, miało by większy sens, gdyż SMS’y są obecnie nieodłączną funkcją telefonów.
Innym moim spostrzeżeniem jest to, że możemy przechwytywać wiadomości tekstowe, ale jeśli byśmy chcieli przechwycić e-mail – już, tak łatwo, się nie da. Ciężko powiedzieć czym to jest spowodowane – może jest to delikatny nacisk ze strony Microsoftu aby korzystać z WCF.
Warto też przemyśleć przydatność tego sposobu komunikowania się z naszą aplikacją – w wiadomości tekstowej, w zależności od operatora możemy zmieścić ok. 160 znaków. Odejmując nasze znaki sterujące – pozostanie nam naprawdę niewiele miejsca na właściwe dane. Problemem mogą być opóźnienia w dostarczeniu informacji, zdarza się to na szczęście bardzo, bardzo rzadko (np. Sylwestrowe przeciążenie) ale dobrze pamiętać, że nikt nie gwarantuje nam ‚natychmiastowego’ dostarczenia wiadomości. Z drugiej strony jeśli nasza firma współpracuje z jakimś operatorem sieci komórkowej – Ten na pewno spojrzy na naszą aplikacje przychylniejszym okiem, gdyż będzie ona generowała ruch w sieci.
Podsumowując na pewno przechwytywanie SMS’ów przyda się przy informowaniu aplikacji o jakimś zdarzeniu przykładowo, że pojawiły się nowe dane na serwerze i powinniśmy dokonać synchronizacji, ale do przesyłania większych porcji danych przyjżałbym się WCF.

Written by sakowicz

Lipiec 5, 2007 @ 7:49 am

Napisane w .NET CF

Odpowiedzi: 11

Subscribe to comments with RSS.

  1. hej na twojej stronie jest artykuł o przechwytywaniu sms czy to działa tylko na palma czy można tez z innego telefonu przechwytywać sms?

    Irek

    Sierpień 29, 2007 at 3:59 pm

  2. Jeśli na danym telefonie masz system Windows Mobile i .NET Compact Framework – powinno zadziałać.

    sakowicz

    Sierpień 29, 2007 at 4:18 pm

  3. witam. czy mozna to rozpisac w jakis zrozumialy dla przecietnego zjadacze jezyk??co to za program NET. Compact framework?? Nokia N73 da rade?

    radar

    Wrzesień 17, 2007 at 7:23 pm

  4. Z tego co się orientuję Nokia N73 działa pod Symbianem co niestety wyklucza zastosowanie powyższego sposobu. Jak na razie wymogiem jest system z rodziny Windows Mobile.

    sakowicz

    Wrzesień 17, 2007 at 7:38 pm

  5. @sakowicz
    Już po urlopie?

    Ris

    Wrzesień 18, 2007 at 7:28 am

  6. Całe szczęście jeszcze nie! Ale jak widać nie wytrzymałem i dorwałem się do sieci😉. Szaleństwa górskie już za mną, teraz czas nadrobić zaległości z rodzinką i znajomymi. Powrót do pracy jakoś w przyszłym tygodniu.

    sakowicz

    Wrzesień 18, 2007 at 9:09 am

  7. Mam pytanko a nie chciałem Ci zawracać dupy na urlopie🙂
    Jak to jest jeśli na urządzeniu typu PDA lub Smartphone .Net Compact Framework jest w ROMie i wiadomo jest to jakaś tam wersja, np. SP2. Teraz wychodzi nowa wersja .NetCF SP3 i czy da się jakoś odinstalować i zainstalować nową wersję? Jak to wygląda? Czy trzeba cały ROM wymienić czy jak?

    Ris

    Wrzesień 18, 2007 at 6:28 pm

  8. Ciekawe pytanie, szczerze nie znam odpowiedzi, jak tylko będę miał okazję to sprawdzę jak to ma działać. Update całego ROM’u to raczej ostateczność gdyż będzie go musiał przygotować producentdanego urządzenia. Podejrzewam, że po prostu będziemy musieli instalować każdy nowy SP – sami, tak jak to robimy dotychczas.

    sakowicz

    Wrzesień 18, 2007 at 7:30 pm

  9. Jasne, że wymiana ROMu to ostateczność i jeśli się da odinstalować i zainstalować to wszystko ok. Czekam na info na email jakbyś miał czas to sprawdzić

    Ris

    Wrzesień 19, 2007 at 7:34 am

  10. mam pytanie jest jakis program do przechwytywania wiadomosci sms przychodzacych i wychodzacych do noki6030 ktory umozliwi mi przechwyt z tego tel na moj

    wajha

    Grudzień 12, 2007 at 3:16 pm

  11. Przykro mi nie znam żadnego takiego programu i szczerze wątpię czy coś takiego istnieje dla tego telefonu.

    sakowicz

    Grudzień 12, 2007 at 3:41 pm


Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

%d bloggers like this: