Cara Menerima SMS di Android menggunakan bahasa Java relatif mudah dibuat walaupun agak sedikit advance daripada programming pengiriman SMS di Android dengan bahasa yang sama yang telah saya bahas di artikel sebelumnya.
Agar aplikasi Android Anda dapat menerima dan membaca SMS yang masuk secara real time, Anda harus menggunakan broadcast receiver bawaan di sistem operasi Android. Berikutnya Anda harus membuat serangkaian kode handler untuk menangani event SMS yang masuk. Berikut step by step-nya
Cara menerima SMS di Android, the Java code
IDE (Intregrated Development Environment) yang saya gunakan adalah Android Studio. Pun sebenarnya Anda dapat membuatnya menggunakan IDE yang lain, semisal Eclipse. Tak beda jauh, cuma mungkin perlu ada beberapa hal yang perlu disesuaikan.
Langkah pertama, buka Android Studio Anda, dan buat project Android baru dengan nama terserah Anda (atau Anda juga dapat membuka project kirim SMS yang telah dibuat berdasarkan artikel sebelumnya).
Langkah kedua, buat file Java baru untuk menampung event handler bila ada SMS masuk. Caranya, dari menu ‘File’ pilih submenu ‘New’ kemudian pilih ‘Java Class’ dan tulis nama file-nya dengan nama ‘SMSreceiver’ (Anda boleh menulis sembarang nama tapi pada coding berikutnya, Anda harus sesuaikan sendiri ya …), hingga muncul tulisan SMSreceiver di jendela tree manager.
Langkah ketiga, double click tulisan SMSreceiver hingga muncul tab ‘SMSreceiver.java’ di jendela Code Editor di sebelah kana jendela Tree Manager (lihat gambar di atas). Berikutnya isikan script berikut sebagai event handler untuk setiap SMS yang masuk.
public class SMSreceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); SmsMessage[] msgs = null; String message = ""; if(bundle != null) { 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]); message = msgs[i].getMessageBody()+" from : "+ msgs[i].getOriginatingAddress(); Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); } } } }
Inti dari source code di atas adalah : pada event ‘onReceive’ milik ‘BroadcastReceiver’ akan dibuat sebuah ‘Bundle’ baru yang merupakan ‘intent’ penerimaan SMS. Bundle ini berisi informasi SMS namun masih dalam format PDU (Packet Data Unit). Data ini kemudian diterjemahkan agar bisa dibaca dengan method SmsMessage.createFromPdu((byte[]) pdus[i]); untuk kemudian diekstrak hasilnya dan dipisahkan antara isi SMS dan nomor pengirimnya dalam variabel String ‘message’. Hasil akhir dari event onReceive ini adalah menampilkan isi SMS dan pengirimnya dalam jendela ‘Toast’ selama beberapa detik.
Langkah keempat, tambahkan deklarasi permission agar aplikasi diijinkan sistem operasi untuk mengakses SMS melalui Broadcast Receiver. Caranya, tambahkan kode berikut pada file AndroidManifest.xml
<uses-permission android:name="android.permission.RECEIVE_SMS"/> <uses-permission android:name="android.permission.READ_SMS" />
Langkah kelima, definisikan receiver ke dalam file AndroidManifest.xml sebagai berikut (baris 14-20)
<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".SMSreceiver" android:enabled="true"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </receiver> </application>
Selesai, sekarang tinggal dicoba aja aplikasinya sob. Jalankan program dari Android Studio, hingga aplikasi berjalan di smartphone Android (menu Run | Run App atau tombol Shift+F10). Kemudian kirimlah SMS ke smartphone Android yang berisi aplikasi tadi, dan lihatlah apa yang terjadi (lihat gambar di bawah)
a Technopreneur – writer – Enthusiastic about learning AI, IoT, Robotics, Raspberry Pi, Arduino, ESP8266, Delphi, Python, Javascript, PHP, etc. Founder of startup Indomaker.com