保持手机里面未读的短信在重新开机后仍然为未读状态的方法

这个问题其实是个通用问题。很多人都会碰到这个问题。

 

技术背景:
AT+CMGR命令是读取短信内容,但是这个AT会把短信的未读状态变为已读。
AT+WUSS,此AT的作用是:段短信而不改变SMS状态.在执行+CMGR或+CMGL后仍保持UNREAD

这样我们在系统(注意不是用户)首次读取这个短信内容时,先发送AT+WUSS,再发送AT+CMGR,这样短信的状态还是未读的,如果用户去读短信,这个时候,再发送AT+CMGR去改变短信的未读状态。

当然,这很简单,但是AT+WUSS不是标准的AT,所以导致有很多厂家的模块不支持这个功能,那么怎么办?

方法还是有的,但是这种情况比较复杂了。
下面我们来详细说下:
这里我们要借助一个不怎么常用的AT+CMGW命令,这个命令是GSM标准命令。
那么我们如何来做?
先介绍下:
AT+CMGW 这个AT是把短信copy到别的index,同时可以设定copy后的短信的状态,比如设为未读短信。,使用方法具体参考AT文档。
AT+CMGD=1 //删除index = 1 位置的短信
步骤就是:
AT+CMGR=1 //假设index = 1是未读短信
AT+CMGW //把index = 1的短信copy到其他地方,同时状态设置为未读。AT返回的就是copy后存放的地方,比如为index = 2;
AT+CMGD=1//删除原已读短信 这里是 index = 1;

现在,如果用户查看这个短信,那么我们就把index = 2的短信设置为为已读。
如果用户没有看这个短信,就关机了,那么等用户重新开机后,这个短信(是指同样内容的短信)还是未读的状态,只不过短信是在index = 2的地方。

这样看就比较完美了。但是其实中间还是有不少要注意的处理地方。
如果用户看完短信,就选择删除,那么此时其实要删除的就是index = 2的位置的短信,因为index = 1的位置的短信已经删除了。

你可能感兴趣的:(开机,手机,短信,状态,休闲)