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.
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 :
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 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();
}
}
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.
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.
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();
}
}