Minggu, 07 Agustus 2016

Membuat Dan Menggunakan Aplikasi SMS

  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 :
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    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:
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    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.
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    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 :
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
105
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 :
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?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
1
<uses-permission android:name="android.permission.SEND_SMS" />

0 komentar:

Posting Komentar