【Android】短信应用——短信(会话)实时删除

我之前的文章中写过短信信息实时获取和短信(会话)删除的例子。

相关链接:

短信信息实时获取: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

你可能感兴趣的:(android,timer,测试,sms,电话)