Tutorial Mengirim SMS Lewat Aplikasi Android Buatan Kita

Last Updated on 10 years by Mas Herdi

Saat ini sudah banyak aplikasi Android yang menggunakan fitur SMS atau pesan singkat untuk berbagai keperluan, salah satu yang sering ditemui misalnya sebagai sarana verifikasi pengguna.  OS Android sendiri, karena mempunyai tingkat modularitas yang tinggi, sudah menyediakan interface dan kelas tertentu yang bisa kita gunakan apabila kita ingin mengintegrasikan layanan SMS ke dalam aplikasi yang kita buat. Bagaimanakah caranya? Mari kita simak postingan di bawah ini 😀

Mengirim SMS lewat aplikasi buatan kita di Android

Untuk dapat mengirim SMS lewat aplikasi Android buatan kita, ada tiga cara yang dapat dilakukan, yaitu menggunakan SMSManager, menggunakan smsto URI, dan menggunakan SMSView intent. Perbedaan di antara ketiga method tersebut akan dijelaskan di bawah ini :

  1. Menggunakan SMSManager
    Metode yang pertama adalah dengan menggunakan SMSManager, yaitu sebuah class khusus yang ada di OS Android yang dikhususkan untuk mengakses fitur-fitur SMS di Android. Kita bisa menggunakan kelas tersebut untuk mengirim sebuah SMS ke nomor yang dituju. Ketika menggunakan SMSManager, SMS akan langsung dikirim dari dalam aplikasi kita, tanpa membutuhkan aplikasi SMS lain. Kodenya kurang lebih sebagai berikut :

        public void sendSmsByManager() {
            try {
                // Mengambil default instance dari SmsManager
                SmsManager smsManager = SmsManager.getDefault();
                smsManager.sendTextMessage(phoneNumber.getText().toString(),
                        null,
                        smsBody.getText().toString(),
                        null,
                        null);
                Toast.makeText(getApplicationContext(), "SMS Berhasil Dikirim!",
                        Toast.LENGTH_LONG).show();
            } catch (Exception ex) {
                Toast.makeText(getApplicationContext(),"Pengiriman SMS Gagal...",
                        Toast.LENGTH_LONG).show();
                ex.printStackTrace();
            }
        }
    

    Bisa dilihat, kode di atas sangatlah simple, kita hanya perlu memanggil satu method sendTextMessage(), dan kemudian memberikan parameter berupa nomor telepon tujuan, nomor telepon pengirim, isi SMS, intent yang akan dieksekusi apabila SMS berhasil terkirim/gagal, dan intent yang akan dieksekusi apabila SMS telah diterima. Namun untuk tutorial ini kita hanya perlu mengisikan nomor telepon tujuan, dan isi SMS saja.

  2. Menggunakan Send To Intent
    Yang kedua adalah dengan menggunakan Intent Send To:

        public void sendSmsBySIntent() {
            // menambahkan phone number ke URI data
            Uri uri = Uri.parse("smsto:" + phoneNumber.getText().toString());
            // membuat intent baru dengan ACTION_SENDTO
            Intent smsSIntent = new Intent(Intent.ACTION_SENDTO, uri);
            // menambahkan isi SMS pada field sms_body
            smsSIntent.putExtra("sms_body", smsBody.getText().toString());
            try{
                startActivity(smsSIntent);
            } catch (Exception ex) {
                Toast.makeText(MainActivity.this, "Pengiriman SMS Gagal...",
                        Toast.LENGTH_LONG).show();
                ex.printStackTrace();
            }
        }
    

    Dengan menggunakan Intent SENDTO, kita akan mengirim SMS menggunakan aplikasi eksternal. Apabila terdapat lebih dari 1 aplikasi SMS pada handphone (misal, Hangouts, SMS), maka kita akan diberikan pilihan aplikasi yang digunakan untuk mengirim SMS. Namun apabila hanya ada satu aplikasi SMS di HP, maka kita akan langsung masuk ke default SMS aplikasi di Android dan mengirim SMS dari sana.

  3. Menggunakan VIEW Intent
    Cara yang ketiga adalah menggunakan VIEW Intent, hampir sama dengan cara nomor 2. Hanya saja dengan menggunakan View Intent kita akan langsung diarahkan ke aplikasi SMS default kepunyaan Android, dan kemudian mengirim SMS dari situ.

    
        public void sendSmsByVIntent() {
    
            Intent smsVIntent = new Intent(Intent.ACTION_VIEW);
            // hanya akan membuka aplikasi SMS/MMS default di Android
            smsVIntent.setType("vnd.android-dir/mms-sms");
    
            // menambahkan nomor telepon dan isi SMS otomatis
            smsVIntent.putExtra("address", phoneNumber.getText().toString());
            smsVIntent.putExtra("sms_body", smsBody.getText().toString());
            try{
                startActivity(smsVIntent);
            } catch (Exception ex) {
                Toast.makeText(MainActivity.this, "Pengiriman SMS Gagal...",
                        Toast.LENGTH_LONG).show();
                ex.printStackTrace();
            }
    
        }
    

Yup, itulah tiga cara yang dapat kita gunakan untuk mengirim SMS menggunakan aplikasi Android buatan kita.

Untuk contoh aplikasinya, kita bisa memulai dengan membuat project Android di Android Studio terlebih dahulu.

Kemudian pada kelas MainActivity.java atau kelas utama di project kalian, replace dengan kode berikut :

package id.web.twoh.smssampleapp;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {

    private EditText phoneNumber;
    private EditText smsBody;
    private Button smsManagerBtn;
    private Button smsSendToBtn;
    private Button smsViewBtn;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        phoneNumber = (EditText) findViewById(R.id.phoneNumber);
        smsBody = (EditText) findViewById(R.id.smsBody);
        smsManagerBtn = (Button) findViewById(R.id.smsManager);
        smsSendToBtn = (Button) findViewById(R.id.smsSIntent);
        smsViewBtn = (Button) findViewById(R.id.smsVIntent);

        smsManagerBtn.setOnClickListener(new OnClickListener() {
            public void onClick(View view) {
                sendSmsByManager();
            }
        });

        smsSendToBtn.setOnClickListener(new OnClickListener() {
            public void onClick(View view) {
                sendSmsBySIntent();
            }
        });

        smsViewBtn.setOnClickListener(new OnClickListener() {
            public void onClick(View view) {
                sendSmsByVIntent();
            }
        });

    }

    public void sendSmsByManager() {
        try {
            // Get the default instance of the SmsManager
            SmsManager smsManager = SmsManager.getDefault();
            smsManager.sendTextMessage(phoneNumber.getText().toString(),
                    null,
                    smsBody.getText().toString(),
                    null,
                    null);
            Toast.makeText(getApplicationContext(), "SMS Berhasil Dikirim!",
                    Toast.LENGTH_LONG).show();
        } catch (Exception ex) {
            Toast.makeText(getApplicationContext(),"Pengiriman SMS Gagal...",
                    Toast.LENGTH_LONG).show();
            ex.printStackTrace();
        }
    }

    public void sendSmsBySIntent() {
        // add the phone number in the data
        Uri uri = Uri.parse("smsto:" + phoneNumber.getText().toString());

        Intent smsSIntent = new Intent(Intent.ACTION_SENDTO, uri);
        // add the message at the sms_body extra field
        smsSIntent.putExtra("sms_body", smsBody.getText().toString());
        try{
            startActivity(smsSIntent);
        } catch (Exception ex) {
            Toast.makeText(MainActivity.this, "Pengiriman SMS Gagal...",
                    Toast.LENGTH_LONG).show();
            ex.printStackTrace();
        }
    }

    public void sendSmsByVIntent() {

        Intent smsVIntent = new Intent(Intent.ACTION_VIEW);
        // hanya akan membuka aplikasi SMS/MMS default di Android
        smsVIntent.setType("vnd.android-dir/mms-sms");

        // menambahkan nomor telepon dan isi SMS otomatis
        smsVIntent.putExtra("address", phoneNumber.getText().toString());
        smsVIntent.putExtra("sms_body", smsBody.getText().toString());
        try{
            startActivity(smsVIntent);
        } catch (Exception ex) {
            Toast.makeText(MainActivity.this, "Pengiriman SMS Gagal...",
                    Toast.LENGTH_LONG).show();
            ex.printStackTrace();
        }

    }
}

 

Kalian bisa mengganti nama package-nya sesuai dengan nama package pada aplikasi kalian. Setelah itu, untuk layout-nya masukkan kode berikut pada file activity_main.xml :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/bg_main"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/text"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Lengkapi isian di bawah untuk mengirim SMS"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
        android:id="@+id/phoneNumber"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="contoh: 082132312123"
        android:inputType="phone" />

    <EditText
        android:id="@+id/smsBody"
        android:layout_width="fill_parent"
        android:layout_height="80dp"
        android:layout_marginBottom="30dp"
        android:hint="Isi SMS..." />

    <Button
        android:id="@+id/smsManager"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Kirim SMS lewat SMS Manager" />

    <Button
        android:id="@+id/smsSIntent"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Kirim SMS lewat SENDTO" />

    <Button
        android:id="@+id/smsVIntent"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Kirim SMS lewat VIEW" />

</LinearLayout>

Yang terakhir, jangan lupa menambahkan permission berikut pada Android Manifest

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

Jika sudah, tinggal dijalankan 🙂 Dan beginilah hasilnya :

Demo

Aplikasi ketika pertama kali dibuk

Berhasil mengirim SMS menggunakan SMSManager

Mengirim SMS lewat Intent SendTo atau View, membuka aplikasi SMS default Android

Mengirim SMS lewat Intent SendTo atau View, membuka aplikasi SMS default Android

Demikian, semoga membantu. Apabila ada yang belum jelas, silahkan bertanya di bagian komentar! 🙂





Download aplikasi kami di Google Play Store


Tutorial Menarik Lainnya :

28 Comments
  1. VQ February 5, 2015
  2. briiant February 27, 2015
  3. denmas alvan April 14, 2015
    • Hafizh Herdi Naufal April 15, 2015
      • nunuy July 28, 2015
        • Hafizh Herdi July 28, 2015
          • Ryan April 7, 2016
          • Hafizh Herdi April 7, 2016
  4. dila May 18, 2015
  5. viani June 26, 2015
  6. dina June 27, 2015
  7. Alfa Renaldo July 19, 2015
    • Hafizh Herdi July 23, 2015
  8. dadi August 20, 2015
    • Hafizh Herdi August 20, 2015
  9. evan October 15, 2015
    • Hafizh Herdi October 15, 2015
  10. budi July 24, 2016
  11. tata July 30, 2016
  12. widya August 4, 2016
  13. muhamad wildan August 12, 2016
  14. A d a n August 8, 2017
    • Hafizh Herdi August 8, 2017
  15. wahyu May 22, 2019
  16. wahyu May 22, 2019

Leave a Reply

Your email address will not be published. Required fields are marked *

TWOH&Co.