日期:2014-05-20  浏览次数:20763 次

smslib 通过短信猫读取短信相关问题。请高手请教。。。。
我用的是smslib-3.3.0b2 版本 和 commons-net-1.4.1 版本。正常的短信 收/发 是没问题的。
但我想实现几个功能,不知道代码怎么实现。。。。
我读取短信的方法是:
List<InboundMessage> msgList;
msgList = new ArrayList<InboundMessage>();
this.srv.readMessages(msgList, MessageClasses.ALL);
for (InboundMessage msg : msgList) {
  Log.info(msg);
}
这样好像是读取SIM卡中未读信息(不怎么确定,我一张卡没有未读信息,显示是0条。换另一张卡,也没有未读信息,但能读出SIM卡中所有信息来)。
问题:1、我想实现只读取未读信息,然后成功读取后就把短信状态设置为已读信息。下次就不要再读取信息了。
2、我不知道要怎么实现监听器(设定多长时间去读取一次短信)。
3、这个平台还要不要用其它框架。
我这个短信平台,主要是用来保存员工每天工作日志的。员工日志发送过来,然后读取信息,保存到数据库中。
请高手帮忙了。。。。。

------解决方案--------------------
兄弟,我也是在做这个。我用的是3.5.0版本的。
this.srv.readMessages(msgList, MessageClasses.ALL);
你这句代码读的是全部的短信,MessageClasses.READ 已读短信, MessageClasses.UNREAD 未读短信。

问题1:我也发了帖子问了这个,没人回答。
问题2: 我用3.5.0版本的自带有监听器,应该是实时监听的。
我们需要实现一个接口来实现回调方法:
先实现接口:IInboundMessageNotification,
然后实现方法:void process(AGateway gateway, MessageTypes msgType, InboundMessage msg)。
从方法可以看出,传入的参数为:网关,短信类型,进站短信。
这样子,当收到短信的时候这个方法会被自动调用,你就得到短信,就可以做后续处理了,
不过郁闷的是,我的程序每次都把所有的短信读取出来,在这里求高人解答.....
如何在回调方法里读取未读短信。。。
问题3: smslib不依赖其他框架。
------解决方案--------------------
(那有没有方法是 把读取出来的信息设置成已读信息了.)

关于这点我也不知道。

(我想做一个短信平台,就隔一段时间读取一次短信,隔一段时间发送短信。还要不要用到其它框架。)

之前我也发帖问过类似的问题,你可以用timer或者quartz实现定时发送,具体情况你上网查一下。
但是,如果说隔一段时间读取一次短信的话,smslib本身带有监听器,收到短信自然会读取,就是我上面说的监听器。