【问题标题】:Android Intent filter using data path使用数据路径的 Android Intent 过滤器
【发布时间】:2016-01-30 10:55:54
【问题描述】:

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

【问题讨论】:

    标签: android android-intent uri intentfilter


    【解决方案1】:

    发送广播时intent action是ACTION_UPDATE_DATA,但是接收广播时intent action是ACTION_UPDATE_CHAT,可能是收不到消息的原因。

    【讨论】:

    • 谢谢!您的帮助。我修改了你提到的。但是还是不行。
    【解决方案2】:

    你应该替换

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

    通过

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

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

    【讨论】:

      猜你喜欢
      • 2014-08-12
      • 2011-04-02
      • 1970-01-01
      • 2013-06-04
      • 1970-01-01
      • 1970-01-01
      • 2013-10-24
      • 1970-01-01
      • 2016-02-02
      相关资源
      最近更新 更多