Android Intent过滤器使用数据路径

时间:2015-10-30 04:43:42

标签: android android-intent uri intentfilter

我正在制作短信应用。 我想通过广播将消息推送到特定的聊天室。 我虽然是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 ..

2 个答案:

答案 0 :(得分:1)

当您发送广播时,意图操作为ACTION_UPDATE_DATA,但是当您收到广播时,意图操作为ACTION_UPDATE_CHAT,也许这就是您无法接收消息的原因

答案 1 :(得分:0)

你应该替换

filter.addDataPath("7777", PatternMatcher.PATTERN_LITERAL);

通过

filter.addDataPath("/7777", PatternMatcher.PATTERN_LITERAL);

变化非常微妙。我所做的就是添加一个" /"之前" 7777"。这将解决它。