我正在编写自己的短信信使,我需要完全抑制新的短信通知提出的默认股票信使。确定我正在拦截传入的短信通知并通过BroadcastReceiver.abortBroadcast()中止Broadcast,如下所示:
public void onReceive(Context context, Intent intent) {
Map<String, String> msgs = retrieveMessages(intent);
for (String address : msgs.keySet()) {
String msg = msgs.get(address);
Log.i(TAG, "New sms received=" + msg);
//saving message in phone
Message message = Message.createIncomingMessage(address, msg);
message.setSeen(1); ////mark message seen, so stock messenger couldn't arose notification
message.setRead(1); //mark message read, so stock messenger couldn't report it as unread
message.setUnread(true); //mark message unread for our messenger
message = Me.getMe().getMessageDAO().save(context, message); //saving message
SmsReceiver.updateNotification(context, message, true, true); //raise notification from "our" messenger
}
//aborting default broadcast, since everything already done and no need to do more
this.abortBroadcast();
}一切都按计划进行。但是,每当我在几秒钟内通过Me.getMe().getMessageDAO().save(context, message);将新的短信插入到数据库中时,股票信使不知何故就会收到关于数据库中新消息的通知,并再次发出通知。
问题是:如何抑制此通知?
发布于 2013-04-18 14:49:53
首先你需要设置你的接收器see docs的priority。
其次,在执行繁重的处理任务(存储到DB)之前调用abortBroadCast。
或者您可以尝试在线程中使用db存储,启动线程并立即调用abortBroadcast()。
https://stackoverflow.com/questions/16076110
复制相似问题