Sharing Knowledge

« Android Translate | Main | Make a Converter in... »
Thursday Jul 08, 2010

SMS Messaging in Android

SMS atau Sort Message Service merupakan salah satu fitur yang paling digemari oleh para pengguna Telepon Seluler. Nah, kita juga bisa mengirim dan menerima SMS di aplikasi Android dengan menggunakan dua emulator Android. Berikut step by step untuk membuat sebuah aplikasi Messaging di Android :

1. Sending SMS Message
Untuk membuat aplikasi Messaging kita membutuhkan sebuah izin ke AndroidManifest.xml . Izin ini bertujuan untuk menentukan hak akses khusus yang diperlukan oleh aplikasi

  <uses-permission android:name="android.permission.SEND_SMS" />

  <uses-permission android:name="android.permission.RECEIVE_SMS" />

Setelah itu, di kelas Activity kita perlu membuat validasi ketika button send di tekan untuk memastikan bahwa nomor telepon dan isi pesan telah terisi sebelum dikirimkan

  btnSendSMS.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {                
                String phoneNo = txtPhoneNo.getText().toString();
                String message = txtMessage.getText().toString();                 
                if (phoneNo.length()>0 && message.length()>0)                
                    sendSMS(phoneNo, message);                
                else
                    Toast.makeText(getBaseContext(),
                        "Please enter both phone number and message.",
                        Toast.LENGTH_SHORT).show();
            }
        });   

setelah pesan dikirimkan akan tampil notifikasi atau pemberitahuan tentang status pesan, baik pesan diterima atau gagal terkirim

registerReceiver(new BroadcastReceiver(){
            @Override
            public void onReceive(Context arg0, Intent arg1) {
                switch (getResultCode())
                {
                    case Activity.RESULT_OK:
                        Toast.makeText(getBaseContext(), "SMS delivered",
                                Toast.LENGTH_SHORT).show();
                        break;
                    case Activity.RESULT_CANCELED:
                        Toast.makeText(getBaseContext(), "SMS not delivered",
                                Toast.LENGTH_SHORT).show();
                        break;                        
                }
            }
        }, new IntentFilter(DELIVERED));       


Gambar 1 Mengirim Pesan


untuk mengetes aplikasi SMS ini, anda dapat mengirim pesan dari satu emulator ke emulator yang lain dengan menggunakan nomor port yang ada di bagian atas emulator (Gambar 1)

Gambar 2 menunjukkan pesan SMS yang diterima pada emulator penerima (emulator dengan port 5556). Pesan dari emulator dengan port 5554 (gambar 1) pertama kali akan muncul di bar pemberitahuan (atas layar). Pesan yang di bar pemberitahuan tadi bisa di drag ke tengah layar dan klik untuk membaca pesan.


Gambar 2 SMS diterima

2. Receiving SMS Message
Untuk melihat bagaimana menerima SMS dalam aplikasi Android, tambahkan elemen <receiver> di file AndroidManifest.xml sehingga pesan yang masuk dapat diterima oleh kelas SMSReceiver

 <receiver android:name=".SMSReceiver">
            <intent-filter>
                <action android:name=
                    "android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>

tambahkan kelas SMSReceiver.java di project anda




di kelas SMSReceiver extend ke BroadcastReceiver dan override ke method onReceive(). Ketika sms diterima method onCreate() akan digunakan. Pesan SMS ada didalam object Intent melalui object Bundle. Pesan disimpan dalam array Object. Untuk mengextract masing - masing pesan menggunakan methos createFromPdu() dari kelas SmsMessage. Pesan SMS ini kemudian ditampilkan dengan Toast .
 package android.advance;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.gsm.SmsMessage;
import android.widget.Toast;

public class SMSReceiver extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
        //---get the SMS message passed in---
        Bundle bundle = intent.getExtras();        
        SmsMessage[] msgs = null;
        String str = "";            
        if (bundle != null)
        {
            //---retrieve the SMS message received---
            Object[] pdus = (Object[]) bundle.get("pdus");
            msgs = new SmsMessage[pdus.length];            
            for (int i=0; i<msgs.length; i++){
                msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);                
                str += "SMS from " + msgs[i].getOriginatingAddress();                     
                str += " :";
                str += msgs[i].getMessageBody().toString();
                str += "\n";        
            }
            //---display the new SMS message---
            Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
        }                         
    }
}



Gambar 3 Mengirim dan Menerima SMS di Emulator Android





netoya_meruvian

Comments:

sugee, bagus banget nih tutorial, thanks before :p

Posted by Latief on May 26, 2011 at 12:10 AM WIT #

mas, cara ngambil value isi smsnya gimana ya?

plis rep

Posted by Hamim on February 01, 2012 at 06:33 PM WIT #

Post a Comment:
  • HTML Syntax: Allowed