Anda di halaman 1dari 4

Aplikasi SMS J2ME.

Mengirim sms dan menerima sms.

import java.util.*;
import java.io.IOException;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.wireless.messaging.*;
import javax.microedition.midlet.*;

/**
* @author Rizky Agung MS
* @nim 07650139
*/
public class smsKu extends MIDlet implements CommandListener, Runnable,
MessageListener {

Display display;
Form form;
List menuList; //list untuk menu awal
Command exitCom, replyCom, backCom, clrCom, sendCom; //macem macem command yg digunakan
TextBox textSmsMasuk, textSmsKeluar; //tempat untuk text sms yg masuk dan yg mau dikirim
TextField textNo; //untuk tempat memasukan no tujuan
String port, isiSmsKeluar; //port dan isi sms
Thread thread;
String[] connections;
boolean done;
MessageConnection smsconn;
Message msg;

public smsKu() {
display = Display.getDisplay(this);
form = new Form("sms-an Yuk");
exitCom = new Command("keluar", Command.EXIT, 1);
replyCom = new Command("balas", Command.SCREEN, 1);
backCom = new Command("Kembali", Command.BACK, 3);
clrCom = new Command("Hapus Tulisan", Command.OK, 2);
sendCom = new Command("Kirim", Command.OK, 1);
menuList = new List("Menu sms Ku", List.IMPLICIT);
port = "4321"; //port yang aku gunakan, silakan ganti sesuai keinginan masing masing
textSmsMasuk = new TextBox(null, null, 500, TextField.ANY);
textSmsKeluar = new TextBox("Silakan Menulis Sms", null,
500, TextField.ANY);
textNo = new TextField("Masukan Nomor Tujuan", "",
15, TextField.PHONENUMBER);
}

public void startApp() {


bukaKoneksi(); //disini membuka koneksi untuk siap menerima sms masuk
menu(); // bikin tampilan menu awal
}

public void pauseApp() {


}

public void destroyApp(boolean unconditional) {

//sebelum aplikasinya keluar ato mati koneksi ditutup dulu


done = true;
thread = null;
if (smsconn != null) {
try {
smsconn.close();
} catch (IOException e) {
}
}
//disini mati deh aplikasi kita
notifyDestroyed();
}

public void menu() { //membuat menu awal untuk sementara ini baru ada 3 menu dulu
menuList.append("Tulis Sms", null);//1. menu tulis sms baru
menuList.append("about", null); //2. menu about (gak penting sih sebenarnya)
menuList.append("Keluar", null); //3. menu untuk keluar aplikasi
menuList.addCommand(exitCom); //add command keluar
menuList.setCommandListener(this);
display.setCurrent(menuList);
}

public void tulisSms() { //membuat textbox untuk menulis sms baru


textSmsKeluar.addCommand(sendCom); //add command untuk kirim
textSmsKeluar.addCommand(clrCom); // add command untuk clear text
textSmsKeluar.addCommand(backCom); //add command untuk kembali kemenu awal
textSmsKeluar.setCommandListener(this);
display.setCurrent(textSmsKeluar);
}

public void masukNo() { //disini untuk memasukan nomor tujuan yang mau dikirimi sms
form.setTitle("Sms Siap dikirim"); //udah taukan yang ini?
form.append(textNo); //menambahkan textField untuk nomor tujuan
form.addCommand(backCom); //menambahkan command untuk kembali ke menu awal
form.addCommand(sendCom); //menambahkan command untuk mengirim
form.setCommandListener(this);
display.setCurrent(form);
}

public void kirim() { //disini sms yang udah ditulis dikirim dengan perintah dibawah ini
new Thread(new Runnable() {
//perhatiin ya
public void run() {
try {
String isiSms = isiSmsKeluar;
String noTujuan = textNo.getString();
String address = "sms://" + noTujuan + ":" + port;
MessageConnection smsConnKir = null;
Message isiSmsNya = null;
smsConnKir = (MessageConnection) Connector.open(address);
TextMessage txtmessage =
(TextMessage) smsConnKir.newMessage(MessageConnection.TEXT_MESSAGE);
txtmessage.setAddress(address);
txtmessage.setPayloadText(isiSms);
isiSmsNya = txtmessage;
smsConnKir.send(isiSmsNya);

} catch (Throwable t) {
t.printStackTrace();
}
}
}).start();
}

public void terima(String isi, String no, Date tgl) { //ini untuk tempat membaca sms yang
masuk
String nonya = fixNomer(no);
textSmsMasuk = new TextBox("Sms dari:" + nonya + " " + tgl, isi,
isi.length(), TextField.ANY);
textSmsMasuk.addCommand(replyCom);
textSmsMasuk.addCommand(exitCom);
textSmsMasuk.setCommandListener(this);
display.setCurrent(textSmsMasuk);
}

public void bukaKoneksi() { //membuka koneksi agar bisa menerima sms yg masuk
String smsConnection = "sms://:" + port;
done = true;
thread = null;

try {
smsconn = (MessageConnection) Connector.open(smsConnection);
smsconn.setMessageListener(this);
} catch (IOException ioe) {
ioe.printStackTrace();
}

connections = PushRegistry.listConnections(true);

done = false;
thread = new Thread(this);
thread.start();
}

public void tutupKoneksi() { //untuk menutup koneksi sms


try {
smsconn.close();
} catch (IOException e) {
}
}

public String fixNomer(String no) {


//dari format no gini "sms://+6285XXXX" jadi "+6285XXX" gitu fungsinya disini itu

String hs = null;
hs = no.substring(6, no.length());
return hs;
}

public void commandAction(Command c, Displayable d) {


if (c == exitCom) {
destroyApp(true);
}
if (d == menuList) {
if (menuList.isSelected(0)) {
tulisSms();
} else if (menuList.isSelected(1)) {
Alert about = new Alert("About", "Aplikasi SMS buatan sendiri",
null, AlertType.INFO);
display.setCurrent(about);
} else if (menuList.isSelected(2)) {
destroyApp(true);
}
}
if (d == textSmsKeluar) {
if (c == sendCom) {
form.deleteAll();
masukNo();
} else if (c == clrCom) {
textSmsKeluar.setString("");
} else if (c == backCom) {
display.setCurrent(menuList);
}
}
if (d == textSmsMasuk) {
if (c == exitCom) {
display.setCurrent(menuList);
} else if (c == replyCom) {
tulisSms();
}
}
if (d == form) {
if (c == backCom) {
form.deleteAll();
display.setCurrent(textSmsKeluar);
} else if (c == sendCom) {
isiSmsKeluar = textSmsKeluar.getString();
textSmsKeluar.setString("");
kirim();
}
}
}

public void run() { //untuk menerima sms yang masuk


try {
msg = smsconn.receive();
String senderAddress = msg.getAddress();
Date waktuSms = msg.getTimestamp();
if (msg instanceof TextMessage) {
String isiSmsMasuk = ((TextMessage) msg).getPayloadText();
terima(isiSmsMasuk, senderAddress, waktuSms);//ini memasukan sms yg diterima ke textbox
}
tutupKoneksi();
bukaKoneksi();
} catch (IOException e) {
}
}

public void notifyIncomingMessage(MessageConnection conn) {


if (thread == null) {
done = false;
thread = new Thread(this);
thread.start();
}
}
}
=========================================================================================

setelah source code nya, biar afdol tak kasih juga scrinsutnya:

Anda mungkin juga menyukai