Odesílání SMS zpráv pomocí J2ME
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Odesílání SMS zpráv pomocí J2MEOdesílání SMS zpráv pomocí J2ME

 

Odesílání SMS zpráv pomocí J2ME

Google       Google       21. 2. 2007       18 381×

Možná, že v nějaké vaší mobilní aplikaci budete potřebovat dát uživateli možnost odeslat SMS zprávu. Zde vám ukážu, jak na to.

Reklama
Reklama

K odesílání SMS zprávy budeme potřebovat balík WMA (Wireless Messaging API). Krom něj budeme potřebovat standardní balíky lcdui, midlet a io (vstup/výstup).


import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.microedition.io.*;
import javax.wireless.messaging.*;

Vytvoříme veřejnou třídu a jako extends nastavíme MIDlet a jako implements CommandListener. Upozorňuji, že třída musí mít stejný název jako soubor (v tomto případě sms.java).


public class sms extends MIDlet implements CommandListener{

Nyní je třeba vytvořit proměnné, které budeme potřebovat. K čemu je budeme potřebovat, je napsáno v komentářích:


Display display; //promenna predstavujici display mobilniho telefonu
Form fCislo; //formular
TextBox txtText; //pro text vasi zpravy
TextField txtCislo; //textove pole pro zadaní tel. cisla
MessageConnection conn = null; //promenna k otevreni spojeni
String sCislo; //telefoni cislo prijemce
     
Command cOdeslat = new Command("Odeslat",Command.OK,1); //tlacitko pro prepnuti obrazovky
Command cOk = new Command("OK",Command.OK,1); //tlacitko pro odeslani SMS zpravy
Command cKonec = new Command("Konec",Command.EXIT,0); //tlacitko pro ukonceni aplikace

Teď přichází na řadu definice proměnných ve funkci sms():


public sms(){
    display = Display.getDisplay(this); //definovani promenne display
    fCislo = new Form("Cislo"); //vytvoreni Formulare
    txtText = new TextBox("Text vaší zptávy","",160,TextField.ANY); //vytvoreni TextBoxu
    txtCislo = new TextField("Telefoni cislo:","",13,TextField.PHONENUMBER); //T.P. do ktereho pujde zadavat pouze cisla a +
  }

Ve funkci startApp přiřadíme tlačítka formulářům a nastavíme formulář, který se má zobrazit při zapnutí aplikace.


public void startApp(){
    txtText.addCommand(cOdeslat); //pridani tlacitka cOdelsat
    txtText.addCommand(cKonec);
    txtText.setCommandListener(this); //nastavit "poslouchani" tlacitek u txtText
    
    fCislo.append(txtCislo); //pridat textove pole na formular fCislo
    fCislo.addCommand(cOk);
    fCislo.addCommand(cKonec);
    fCislo.setCommandListener(this); //nastavit "poslouchani" tlacitek u formulare fCislo
    
    display.setCurrent(txtText); //zobrazit na displayi txtText
  }

A ještě nezbytné funkce:


  public void pauseApp(){ } //f-ce pro pauznutí aplikace - povinna           
  public void destroyApp(boolean b){ } //f-ce pro ukonceni aplikace - povinna

A teď funkce, ve které budou všechny akce po stisknutí jednotlivých tlačítek:


  public void commandAction(Command c,Displayable d){
    if(c == cOdeslat){ //pokud bylo stisknuto tlacitko cOdeslat
      display.setCurrent(fCislo); //nastavit na displayi formular fCislo
      
    }

A teď přichází na řadu to nejdůležitější, pokud bylo stisknuto tlačítko Ok pro odeslání SMS zprávy, přiřadíme proměnné sCislo důležitý prefix sms:// a telefonní číslo příjemce z textového pole. Poté otevřeme spojení, vytvoříme SMS zprávu a vložíme do ní text z TextBoxu a poté již můžeme zprávu odeslat. Nakonec jenom ošetříme některé výjimky a je to.


    if(c == cOk){
      sCislo = "sms://"+txtCislo.getString(); //prefix sms:// + telefoni cislo prijemce
      
      try{
        conn = (MessageConnection) Connector.open(sCislo); //otevreni spojeni
        TextMessage zprava = (TextMessage)conn.newMessage(conn.TEXT_MESSAGE); //vytvoreni SMS zpravy
        zprava.setPayloadText(txtText.getString()); //pridame do SMS zpravy nas text
        conn.send(zprava); //a posleme ji..
      }
      catch(Exception e){
        destroyApp(true); //pri vyjimce ukoncime aplikaci
        notifyDestroyed();
      } finally {
        if(conn != null){
          try{
            conn.close(); // pokud nebylo spojeni ukonceno, tak jej ukoncime
            
          }
          catch(Exception e){
            destroyApp(true); //pri vyjimce ukoncime aplikaci
            notifyDestroyed();
          } 
        }
      }
    
    }

A pokud uživatel zvolil tlačítko Konec, ukončíme aplikaci.


    if(c == cKonec){
      destroyApp(true); //ukoncime aplikaci
      notifyDestroyed();
    
    }
  
  }

Zdrojový kód celé aplikace:


import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.microedition.io.*;
import javax.wireless.messaging.*;

public class sms extends MIDlet implements CommandListener{
  Display display; //promenna predstavujici display mobilniho telefonu
  Form fCislo; //formular
  TextBox txtText; //pro text vasi zpravy
  TextField txtCislo; //textove pole pro zadaní tel. cisla
  MessageConnection conn = null; //promenna k otevreni spojeni
  String sCislo;
     
  Command cOdeslat = new Command("Odeslat",Command.OK,1); //tlacitko pro prepnuti obrazovky
  Command cOk = new Command("OK",Command.OK,1); //tlacitko pro odeslani SMS zpravy
  Command cKonec = new Command("Konec",Command.EXIT,0); //tlacitko pro ukonceni aplikace
  
  public sms(){
    display = Display.getDisplay(this); //definovani promenne display
    fCislo = new Form("Cislo"); //vytvoreni Formulare
    txtText = new TextBox("Text vaší zptávy","",160,TextField.ANY); //vytvoreni TextBoxu
    txtCislo = new TextField("Telefoni cislo:","",13,TextField.PHONENUMBER); //T.P. do ktereho pujde zadavat pouze cisla a +
  }
  public void startApp(){
    txtText.addCommand(cOdeslat); //pridani tlacitka cOdelsat
    txtText.addCommand(cKonec);
    txtText.setCommandListener(this); //nastavit "poslouchani" tlacitek u txtText
    
    fCislo.append(txtCislo); //pridat textove pole na formular fCislo
    fCislo.addCommand(cOk);
    fCislo.addCommand(cKonec);
    fCislo.setCommandListener(this); //nastavit "poslouchani" tlacitek u formulare fCislo
    
    display.setCurrent(txtText); //zobrazit na displayi txtText
  }
  
  public void pauseApp(){ } //f-ce pro pauznutí aplikace - povinna
  public void destroyApp(boolean b){ } //f-ce pro ukonceni aplikace - povinna
  
  public void commandAction(Command c,Displayable d){
    if(c == cOdeslat){ //pokud bylo stisknuto tlacitko cOdeslat
      display.setCurrent(fCislo); //nastavit na displayi formular fCislo
      
    }
    if(c == cOk){
      sCislo = "sms://"+txtCislo.getString(); //prefix sms:// + telefoni cislo prijemce
      
      try{
        conn = (MessageConnection) Connector.open(sCislo); //otevreni spojeni
        TextMessage zprava = (TextMessage)conn.newMessage(conn.TEXT_MESSAGE); //vytvoreni SMS zpravy
        zprava.setPayloadText(txtText.getString()); //pridame do SMS zpravy nas text
        conn.send(zprava); //a posleme ji..
      }
      catch(Exception e){
        destroyApp(true); //pri vyjimce ukoncime aplikaci
        notifyDestroyed();
      } finally {
        if(conn != null){
          try{
            conn.close(); // pokud nebylo spojeni ukonceno, tak jej ukoncime
            
          }
          catch(Exception e){
            destroyApp(true); //pri vyjimce ukoncime aplikaci
            notifyDestroyed();
          } 
        }
      }
    
    }
    
    if(c == cKonec){
      destroyApp(true); //ukoncime aplikaci
      notifyDestroyed();
    
    }
  
  }
}

To je vše. Nakonec jenom dodám, že tato SMS stojí stejně jako normální SMS! Doufám, že se po mně po zveřejnění nebudete dožadovat dobití kreditu :-).

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

4 názory  —  4 nové  
Hlasování bylo ukončeno    
0 hlasů
Google
Alan se věnuje programování webových aplikací a jazyku C++. Studuje na FEI-VŠB v Ostravě

Nové články

Obrázek ke článku Nový IT hráč na českém trhu

Nový IT hráč na českém trhu

V roce 2015 otevřela v Praze na Pankráci v budově City Tower své kanceláře společnost EPAM Systems (NYSE:EPAM), jejíž centrála se nachází v USA. Společnost byla založená v roce 1993 a od té doby prošla velkým vývojem a stále roste.

Reklama
Reklama
Obrázek ke článku České Radiokomunikace opět hledají nejlepší nápady pro internet věcí

České Radiokomunikace opět hledají nejlepší nápady pro internet věcí

České Radiokomunikace (CRA) pořádají druhý ročník CRA IoT Hackathonů. Zájemci z řad vývojářů a fanoušků moderních technologií mohou změřit své síly a během jediného dne sestrojit co nejzajímavější funkční prototyp zařízení, které bude komunikovat prostřednictvím sítě LoRa. CRA IoT Hackathony se letos uskuteční ve dvou fázích, na jaře a na podzim, v různých městech České republiky. Jarní běh se odstartuje 31. března v Brně a 7. dubna v Praze.

Obrázek ke článku Cloud computing je využíván stále intenzivněji

Cloud computing je využíván stále intenzivněji

Využívání cloud computingu nabývá na intenzitě. Jen v letošním roce vzroste podle analytiků trh se službami veřejného cloudu o 18 %, přičemž o téměř 37 % vzrostou služby typu IaaS. Růst o více než pětinu pak čeká služby poskytování softwaru formou služby, tedy SaaS. Aktuálním trendům v oblasti využívání cloudu se bude věnovat konference Cloud computing v praxi, která se koná 23. března. 2017 v pražském Kongresovém centru Vavruška na Karlově náměstí 5.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032017 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý