当临时有短信接收是,即需短信监听,其监听方法有两种:一、通过广播发送及接收;二、监听数据库的数据变化
一、数据库变化
//接收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);