Archive for April 24th, 2015

AplikasiSMS – Membaca SMS dengan SMSLib

Kali ini kita masih membahas bagian dari AplikasiSMS, yaitu bagian yang digunakan untuk membaca sms yang masuk dan menghapus sms tersebut.

Didalam AplikasiSMS, digunakan dua cara dalam melakukan pembacaan sms. Yang pertama, sms dibaca saat smslib pertama kali berjalan dengan menggunakan cara synchronous dan yang kedua saat ada sms yang masuk dengan memanfaatkan kelas callback smslib (asynchronous).

Pembacaan sms secara synchronous menggunakan method readMessage(), source codenya seperti berikut.

/**
     * Method untuk membaca pesan yang masuk kemudian menghapusnya secara otomatis
     * @param sleep
     * @throws Exception 
     */
    public void readMessage(int sleep) throws Exception{
        if(service.getServiceStatus()==Service.ServiceStatus.STARTED){
            inboudMessageList = new ArrayList<InboundMessage>();
            service.readMessages(inboudMessageList, MessageClasses.ALL);
            if(inboudMessageList.size()>0){
                for (InboundMessage msg : inboudMessageList){
                    //tulis dilayar
                    tulisLayar(0, HPUtil.cekHP(msg.getOriginator()), msg.getText(), msg.getDate(), "MESSAGE READ");
                    

                    service.deleteMessage(msg);
                }
                Thread.sleep(sleep);
            }
        }
    }

Dengan method diatas, semua pesan yang masuk akan dibaca dengan memanfaatkan ArrayList. Setelah itu sms akan ditampilkan dilayar aplikasi pesan yang ada di modem akan langsung dihapus.

Jika smslib sudah berjalan, pembacaan sms memanfaatkan fasilitas callback yang terdapat di smslib. Inner class yang digunakan adalah sebagai berikut.

/**
     * Class yang akan dijalankan saat aplikasi menerima pesan baru
     */
    class InboundNotification implements IInboundMessageNotification{
        @Override
        public void process(AGateway gateway, MessageTypes msgType, InboundMessage msg){
            if (msgType == MessageTypes.INBOUND){                
                try {
                    if(msg.getText()!=null && msg.getOriginator()!=null){
                        tulisLayar(0, HPUtil.cekHP(msg.getOriginator()), msg.getText(), msg.getDate(), "MESSAGE READ");
                    }
                    
                    service.deleteMessage(msg);
                } catch (Exception ex) {
                    onWarning("Terjadi Kesalahan saat memproses pesan yang masuk !!\n"+ex.getMessage());
                    Logger.getLogger(MainView.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }

Ketika sms masuk, smslib akan memanggil class InboundNotification dan menjalankan method process(). Didalam method tersebut, sms akan ditampilkan dilayar dan sms yang ada dimodem akan dihapus.

Dengan memanfaatkan fasilitas callback, kita tidak perlu membuat sebuah method yang digunakan untuk membaca sms yang masuk. Jadi source code menjadi lebih ringkas.

, , , , , ,

Leave a comment