开机后,注册ContentObserver,通过ContentObserver监听短信。
我现在的问题是,开机后ContentObserver没反应,onchange没响应。
代码如下:
开机广播注册
<receiver android:name="lt.smarthome.service.BootReceiver" android:permission="android.permission.BROADCAST_SMS">
<intent-filter android:priority="2147483647">
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
--------------------------------------------------------------------------------------------
.BootReceiver开机响应后,里面的ContentObserver注册代码:
Log.d("mdbs", "-------------------开机拦截-------");
SMSObserver smsObserver=new SMSObserver(handler,context);
context.getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, smsObserver);
------------------------------------------------------------------------------------------------
SMSObserver函数:
public class SMSObserver extends ContentObserver{
public SMSObserver(Handler handler,Context context) {
super(handler);
this.context=context;
Log.d("mdbs", "----------SMSObserver--- 初始化");
}
public void onChange(boolean selfChange) {
// TODO Auto-generated method stub
super.onChange(selfChange);
Log.d("mdbs", "----------onChange--- 进入");
}
}
问题是,只打印到----------SMSObserver--- 初始化,我发送短信,onChange没有进入,没有打印----------onChange--- 进入,各位,请问是什么原因啊。
当我用其他方式注册ContentObserver,onchange有响应
自己解决了,是因为我开机启动的服务被关闭了,后来在程序运行是又重启一次服务就问题了,当然开机的时候如果已经启动,不会第二次开启服务,大家都懂的。奇怪的是,后来我开机启动服务又正常了,所以我上面的代码都是正确的,监听短信数据库,从而达到截获短信的目的。当然大家有什么见解请踊跃发言