如何将自定义扩展名(时间)添加到<message>标签?

舒坦特

我正在尝试使用自定义数据包扩展名将时间扩展添加到邮件中。似乎在发送消息时增加了时间。但是在接收器端,它显示为空。

这是我的数据包扩展类和EmbeddedExtensionProvider

public class TimestampExtension implements PacketExtension {

    public static final String ELEMENT = "timestamp";
    public static final String NAMESPACE = "urn:xmpp:timestamp";

    public String TIME = null;

    public TimestampExtension() {

    }

    public void setTime() {
        SimpleDateFormat time = new SimpleDateFormat("hh:mm a");
        Date dateTime = new Date();
        String strTime = time.format(dateTime);
        this.TIME = strTime;
    }

    public String getTime() {
        return TIME;
    }

    @Override
    public String getElementName() {
        return ELEMENT;
    }

    @Override
    public String getNamespace() {
        return NAMESPACE;
    }

    @Override
    public String toXML() {
        return "<" + ELEMENT + " xmlns='" + NAMESPACE + "'><time>" + TIME
            + "</time></" + ELEMENT + ">";
    }

    public static class Provider extends EmbeddedExtensionProvider {

        @Override
        protected PacketExtension createReturnExtension(String arg0,
            String arg1, Map<String, String> arg2,
            List<? extends PacketExtension> arg3) {

            return new TimestampExtension();
        }
    }
}

注册提供商

ProviderManager.getInstance().addExtensionProvider(
            TimestampExtension.ELEMENT, TimestampExtension.NAMESPACE,
            new TimestampExtension.Provider());

发送带有扩展名的消息

TimestampExtension timeExt = new TimestampExtension();
timeExt.setTime();
msg.addExtension(timeExt);
connection.sendPacket(msg);

发件人处的消息xml输出:

<message id="m55K5-7" to="testfirzan@sushant" type="chat">
<body>hi</body><request xmlns='urn:xmpp:receipts'/>
<timestamp xmlns='urn:xmpp:timestamp'>
<time>01:04 PM</time>
</timestamp>

接收者处的消息xml输出:

<message id="m55K5-7" to="testfirzan@sushant" from="testsushant@sushant/Smack" type="chat">
<body>hi</body><request xmlns='urn:xmpp:receipts'/>
<timestamp xmlns='urn:xmpp:timestamp'>
<time>null</time>
</timestamp>

应该在时间元素中显示发送时间。我做错了什么?

舒坦特

对不起人们迟到的答案。

由于时间对我来说是必填参数,所以我最终使用了 DefaultPacketExtension

//To sent message
private void sendMessage(String message, String recipient) {

    Message msg = new Message(recipient, Message.Type.chat);
    msg.setBody(message);

    //Getting current timestamp in string format
    String messageTimeStamp = String.valueOf(System.currentTimeMillis());

    //Creating default packet extension with name as 'timestamp' and urn as 'urn:xmpp:timestamp'
    DefaultPacketExtension extTimeStamp = new DefaultPacketExtension(
                                        "timestamp", "urn:xmpp:timestamp");

    //Setting value in extension
    extTimeStamp.setValue("timestamp", messageTimestamp);

    //Add extension to message tag
    msg.addExtension(extTimeStamp);

    //Send message
    xmppConnection.sendPacket(message);
}


//To receive and parse message with extension implement PacketListener
@Override
public void processPacket(Packet packet) {

    Message message = (Message) packet;

    //Get the extension from message
    DefaultPacketExtension extTimestamp = (DefaultPacketExtension) message
                    .getExtension("urn:xmpp:timestamp");

    //Get the value from extension
    long timestamp = Long.parseLong(extTimestamp.getValue("timestamp"));

    System.out.println("Message :" + message.getBody() + " Timestamp: "+timestamp);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将自定义扩展名(时间)添加到<message>标签?

来自分类Dev

如何将自定义标签添加到facet_grid()

来自分类Dev

如何将自定义HTTP标头添加到Chrome自定义标签?

来自分类Dev

将自定义标签添加到TIFF文件

来自分类Dev

Notepad ++将自定义标签添加到行

来自分类Dev

Notepad ++将自定义标签添加到行

来自分类Dev

如何在JS Fiddle中将自定义属性添加到head标签?

来自分类Dev

将自定义css添加到wordpress导航中<a>标签内的<i>标签

来自分类Dev

将自定义标签添加到xcode中的网址

来自分类Dev

将自定义类标签添加到数据表行

来自分类Dev

将自定义标签添加到xcode中的网址

来自分类Dev

将自定义标签添加到拆分视图中的原型单元格

来自分类Dev

如何将自定义外壳菜单添加到选定的.exe程序或。“扩展名”

来自分类Dev

将Floatformat添加到Django自定义标签

来自分类Dev

将自定义模板文件添加到typo3 新闻扩展名

来自分类Dev

如何使用Extjs在Message.box中添加标签

来自分类Dev

我可以使用CSS内容和计数器将自定义标签添加到网格中吗?

来自分类Dev

如何将自定义模板标签传递给Jinja2 Template类?

来自分类Dev

使用OpenSSL将自定义扩展名添加到PKCS#10请求中(以编程方式)

来自分类Dev

如何在Android的Chrome自定义标签中将EXTRA_REFERRER添加到CustomTabsIntent构建器

来自分类Dev

如何在Android的Chrome自定义标签中将EXTRA_REFERRER添加到CustomTabsIntent构建器

来自分类Dev

Android Chrome自定义标签将“复制链接”添加到选项菜单

来自分类Dev

将类添加到自定义form_for标签

来自分类Dev

将标签作为子级添加到自定义组件

来自分类Dev

在Android中将标签和图像动态添加到自定义视图

来自分类Dev

将标签和字段添加到自定义joomla组件

来自分类Dev

如何将自定义地图和自定义数据添加到Highmaps?

来自分类Dev

如何将自定义文件添加到自定义文章列表页面

来自分类Dev

如何将自定义指标添加到jelly中以进行电子邮件扩展?

Related 相关文章

  1. 1

    如何将自定义扩展名(时间)添加到<message>标签?

  2. 2

    如何将自定义标签添加到facet_grid()

  3. 3

    如何将自定义HTTP标头添加到Chrome自定义标签?

  4. 4

    将自定义标签添加到TIFF文件

  5. 5

    Notepad ++将自定义标签添加到行

  6. 6

    Notepad ++将自定义标签添加到行

  7. 7

    如何在JS Fiddle中将自定义属性添加到head标签?

  8. 8

    将自定义css添加到wordpress导航中<a>标签内的<i>标签

  9. 9

    将自定义标签添加到xcode中的网址

  10. 10

    将自定义类标签添加到数据表行

  11. 11

    将自定义标签添加到xcode中的网址

  12. 12

    将自定义标签添加到拆分视图中的原型单元格

  13. 13

    如何将自定义外壳菜单添加到选定的.exe程序或。“扩展名”

  14. 14

    将Floatformat添加到Django自定义标签

  15. 15

    将自定义模板文件添加到typo3 新闻扩展名

  16. 16

    如何使用Extjs在Message.box中添加标签

  17. 17

    我可以使用CSS内容和计数器将自定义标签添加到网格中吗?

  18. 18

    如何将自定义模板标签传递给Jinja2 Template类?

  19. 19

    使用OpenSSL将自定义扩展名添加到PKCS#10请求中(以编程方式)

  20. 20

    如何在Android的Chrome自定义标签中将EXTRA_REFERRER添加到CustomTabsIntent构建器

  21. 21

    如何在Android的Chrome自定义标签中将EXTRA_REFERRER添加到CustomTabsIntent构建器

  22. 22

    Android Chrome自定义标签将“复制链接”添加到选项菜单

  23. 23

    将类添加到自定义form_for标签

  24. 24

    将标签作为子级添加到自定义组件

  25. 25

    在Android中将标签和图像动态添加到自定义视图

  26. 26

    将标签和字段添加到自定义joomla组件

  27. 27

    如何将自定义地图和自定义数据添加到Highmaps?

  28. 28

    如何将自定义文件添加到自定义文章列表页面

  29. 29

    如何将自定义指标添加到jelly中以进行电子邮件扩展?

热门标签

归档