短信監聽---數據庫變動

當臨時有短信接收是,即需短信監聽,其監聽方法有兩種:一、通過廣播發送及接收;二、監聽數據庫的數據變化

一、數據庫變化

//接收Handler發送的msg,進行相應的操作

Handler mesgHandler=new  Handler(){  
        @Override 
        public void handleMessage(Message msg) {  
            // TODO Auto-generated method stub  
            super.handleMessage(msg);
            switch(msg.what){
            case 1:
             //相應需要的操作
            }
        }  
    };
 

//繼承短信的監聽服務,重寫onChange()函數,一但數據庫數據發送變化,該函數會被調用
 class MyContentObserver extends ContentObserver{
        public MyContentObserver(Handler handler) {  
            super(handler);   
        }  
        @Override 
        public void onChange(boolean selfChange) {   //數據庫一產生變化,就會執行onChange函數
            super.onChange(selfChange);   

            //當數據庫數據發生變化,即該函數被調用,通過Handler傳值響應相應的操作
            Message msg=new Message();
            msg.what=1;
            mesgHandler.sendMessage(msg);//數據庫一有監聽就用hander刷新存儲鏈表
            System.out.println("監聽到了短信數據庫的數據產生變化");
        }  
          
        @Override 
        public boolean deliverSelfNotifications() {  
            // TODO Auto-generated method stub  
            return super.deliverSelfNotifications();  
        }  
    }

 

 

//註冊數據庫監聽

  MyContentObserver mco;//繼承的短信監聽server類
  Uri uri = Uri.parse("content://sms/");    //短信URI
  mco = new MyContentObserver(mesgHandler);
  getApplicationContext().getContentResolver().registerContentObserver(uri, true, mco);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章