當臨時有短信接收是,即需短信監聽,其監聽方法有兩種:一、通過廣播發送及接收;二、監聽數據庫的數據變化
一、數據庫變化
//接收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);