我之前的文章中写过短信信息实时获取和短信(会话)删除的例子。
相关链接:
短信信息实时获取:http://blog.csdn.net/etzmico/article/details/6860692
短信(会话)删除:http://blog.csdn.net/etzmico/article/details/7077123
因此上述两个方法设计的代码本文将不在写出,可以点击链接查看。
这次把他们结合起来,不过一些小细节需要注意,
首先,在Activity类中声明 ContentResolver,且在onCreate中定义。
static ContentResolver cr; cr = getContentResolver();
其次,Android的短息接收机制中,是先监听到,然后存入收件箱以及在Notification中提示,系统监听到短信后不会立刻存入收件箱和提示,因此在删除时要特别注意。
new Timer().schedule(new TimerTask() {
@Override
public void run() {
//删除短信代码
}
}, 5000);
我们可以做一个这样的延时器,因为接收短信触发短信接收类中 onReceive 方法时,收件箱里并没有信息呢,即使把优先级降到最低也无济于事。
因此我们把删除短信的方法做一个延时操作就可以了,根据本人测试,5秒为妙,因为很多机器会因为各种原因而早成系统运行慢……如果再长,机器更卡,那就再把事件增加一些就可以了……这里的5000为5000毫秒,即5秒。
还有,我们为了避免短信删除,我们可以做if判断,给删除短信方法添加条件。
StringBuffer SMSAddress.append(message.getDisplayOriginatingAddress()); // 发件人电话号码 StringBuffer SMSContent.append(message.getDisplayMessageBody()); // 短信内容这样,就不会造成短信的误删了。
最后再提示下Manifest.xml中的权限问题,一共3个。
<uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.WRITE_SMS" /> <uses-permission android:name="android.permission.READ_SMS" />
Demo下载:http://download.csdn.net/detail/etzmico/3975608