如何在Smack中设置自定义Message.Type字符串?

时间:2014-01-28 08:31:23

标签: xmpp smack

我正在尝试使用Smack发送聊天。这是代码

  Chat chat = connection.getChatManager().createChat("2@coolcast.com", this);
  Message _msg = new Message();
  _msg.setBody("Hello this is a test message");
  chat.sendMessage(_msg);

此消息在收件人端以type =“chat”显示。如何将此邮件类型更改为自定义字符串,例如“my_custom_string”?

我尝试了这个,但很容易理解为什么以下内容不起作用

  Message.Type _type = Message.Type.fromString("my_custom_string");
  _msg.setType(_type);

1 个答案:

答案 0 :(得分:0)

Message是smack中的最终类,它也遵循消息Stanza的xmpp协议,因此您无法修改Message中的Type字段。 但是我们不能放弃,在这里你可以通过在Message Stanza中添加自定义扩展来尝试一个小技巧,你只需要使用smack的提供者架构创建一个ExtensionElement,然后将其添加到Message Packet中在addExtension()对象上调用Message方法。

会是这样的:

 <message from="demo@mydomain.com" to="demo2@mydomain.com" type="chat">
    <body>Hi this is demo 1</body>
    <my_custom_element xmlns="some_name_space" attributr="some_attribute">Some custom message</my_custom_element>
</message> 

你可以在smack中对任何Packet / Stanza进行多次扩展。

了解有关Smack Provider Architecture的更多信息,请点击this link