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 235×

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 RAD Studio a Windows Store

RAD Studio a Windows Store

RAD Studio je první vývojové prostředí se zabudovanou podporou balení aplikací typu Win32 a Win64 pro jejich umístění a šíření prostřednictvím Windows 10 Store.

Reklama
Reklama
Obrázek ke článku Testujte na 2 400+ Android a iOS zařízení

Testujte na 2 400+ Android a iOS zařízení

V dnešní době, kdy většina softwaru pro mobilní aplikace je tvořena a distribuována průběžně, mnohdy do celého světa je třeba zajistit také průběžnou automatizaci testování mobilního softwaru. V případě mobilních aplikací pro Android a iOS začíná být problém, jak testovat na obrovském množství kombinací HW variant, rozměrů, edic operačních systémů různých výrobců v různých částech světa na reálných zařízení. Simulátory a emulátory nejsou většinou to pravé. Pokud již testuji, jak si udělat vlastní beta distribuci opravdovým reálným testerům napříč platformami?

Obrázek ke článku Funkcie main vo Windows API

Funkcie main vo Windows API

V tretej časti seriálu o Windows API budeme hovoriť o funkčných prototypoch main. Funkčný prototyp je tvorený názvom funkcie a typom signatúry, pričom sa vynecháva telo funkcie. 

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ý