我正在制作短信应用。 我想通过广播将消息推送到特定的聊天室。 我虽然是uri。
chat://chatroom/{room name}
我发送消息到房间名称7777。
Intent intent = new Intent(ACTION_UPDATE_CHAT);
intent.setData(Uri.parse("chat://chatroom/7777"));
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
我用一个像下面那样的意图过滤器重新播放了一个广播接收器。 但是我收不到消息。
IntentFilter filter = new IntentFilter(ACTION_UPDATE_CHAT);
filter.addDataScheme("chat");
filter.addDataAuthority("chatroom", null);
filter.addDataPath("7777", PatternMatcher.PATTERN_LITERAL);
LocalBroadcastManager.getInstance(context).registerReceiver(receiver, filter);
请帮助!! :)
更新。 当我删除这一行时,我可以收到br。
filter.addDataPath("7777", PatternMatcher.PATTERN_LITERAL);
但是如果那么......每个聊天室都会收到br ..
答案 0 :(得分:1)
当您发送广播时,意图操作为ACTION_UPDATE_DATA
,但是当您收到广播时,意图操作为ACTION_UPDATE_CHAT
,也许这就是您无法接收消息的原因
答案 1 :(得分:0)
你应该替换
filter.addDataPath("7777", PatternMatcher.PATTERN_LITERAL);
通过
filter.addDataPath("/7777", PatternMatcher.PATTERN_LITERAL);
变化非常微妙。我所做的就是添加一个" /"之前" 7777"。这将解决它。