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

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

 
Hledat
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno
Laser Game Ostrava

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

Google       Google       21. 2. 2007       20 957×

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 Konference: Moderní informační systémy podporují automatizaci

Konference: Moderní informační systémy podporují automatizaci

Současná situace v šíření onemocnění Covid-19 klade na řadu firem nové nároky a mnohé z nich jsou nyní více než kdy jindy závislé na nejmodernějších informačních technologiích. Proto i v oblasti podnikových informačních systémů vidíme rostoucí důraz na automatizaci nebo na důslednou integraci. Také o těchto trendech se bude mluvit na konferenci Firemní informační systémy, která se koná 24.9.2020 v pražském Kongresovém centru Vavruška na Karlově náměstí.

Reklama
Reklama
Obrázek ke článku Nebezpečí ukrytá v USB: z nuly na škvarek za pět sekund

Nebezpečí ukrytá v USB: z nuly na škvarek za pět sekund

Za cenu šesti dolarů lze celkem bez obtíží koupit nový, líbivě vyhlížející flash disk. Přidaná hodnota, které se vám spolu s ním dostane, už tak moc líbivá není. To, co se před pár sekundami tvářilo jako externí disk, se po připojení k počítači změní v důmyslné elektrické křeslo, které vaše zařízení v onen příslovečný škvarek promění za pár sekund. Cílovou skupinou pro koupi takových zařízení by mohli být záškodníci, kteří by tímto způsobem osnovali pomstu třeba vůči záletnému partnerovi. 

Obrázek ke článku Znalosti, dovednosti i prestižní titul MBA: Jde to i moderně a online

Znalosti, dovednosti i prestižní titul MBA: Jde to i moderně a online

Snad nikdy není špatná příležitost na investici do hodnotného vzdělání. Obzvlášť v případě, že absolvent dovede teoretické poznatky přetavit v praktické dovednosti, využitelné při řešení problémů i v komunikaci. Právě na to se specializuje studijní program MBA Řízení informačních technologií, vyučovaný na Business Institutu.

Obrázek ke článku Coding Bootcamp Praha: Obor IT krize nepoznamenala, žádaní jsou weboví vývojáři

Coding Bootcamp Praha: Obor IT krize nepoznamenala, žádaní jsou weboví vývojáři

Pandemie Covid-19 otřásla trhem práce v základech. Dopady krize pocítilo celkově až 45 % zaměstnanců. Není divu, že čím dál větší jistotu přináší obor IT. Ten zůstal krizí téměř nepoznamenán a při nutnosti začít dělat věci na dálku se ještě více ukázalo, jak moc mnohé firmy kvalitní IT potřebují. Do IT nyní přicházejí začátečníci, kteří v něm vidí lukrativní budoucnost a jistotu, ale i freelanceři a zaměstnanci z oborů zasažených krizí

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032020 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý