Articles of smack

Android xmpp MUC设置默认configuration

我正在使用Xabber开源项目,并且能够创build一个新的组,但它总是说:这个房间被locking,直到configuration被确认。 我试图设置一个默认的configuration,但它引发了我的exception:401未经授权。 到底是什么问题。 final MultiUserChat multiUserChat; try { multiUserChat = new MultiUserChat(xmppConnection, room); // CHANAKYA: set default config for the MUC // Send an empty room configuration form which indicates that we want // an instant room try { multiUserChat.sendConfigurationForm(new Form(Form.TYPE_SUBMIT)); } catch (XMPPException e) { e.printStackTrace(); }

如何从XMPP XML消息中获取自定义属性值?

好吧,简单的问题,但对我来说很重要。 所以,其他的Android客户端都发送这个XML MSG: <message id='6ymdM-19' to='xox@xox.xox/smack' type='chat'> <subject>normal</subject> <received xmlns='urn:xmpp:receipts' id='HVgQw-5'/> </message> 我的听众大概是这样的: private class MsgListener implements ChatStateListener { /** * Constructor. */ public MsgListener() { } @Override public void processMessage(Chat chat, org.jivesoftware.smack.packet.Message message) { String xmlMessage = message.toXML(); Log.v(TAG, "XML Chat: "+xmlMessage); // getExtension namespace try urn:xmpp:receipts if(xmlMessage.contains("<request xmlns=")) { Log.d(TAG, "new chat message […]

Android – Smack的存在和“打字”function无法正常工作

我在Android应用程序中使用Smack库v4.1.0(不是aSmack)作为聊天function。 我似乎无法得到以下两个function工作: 用户存在(在线,上次查看) 聊天消息状态(发送,发送,阅读) 对于用户存在,我使用下面的代码总是返回null 。 Presence userPresence = roster.getPresence(toUser); System.out.println("*** User status: " + userPresence.getStatus()); if (userPresence.getMode() == Presence.Mode.available || userPresence.getMode() == Presence.Mode.chat) { lblIsTyping.setText("Online"); } else { lblIsTyping.setText("Offline"); } 对于消息状态,我使用以下代码: private class MessageListenerImpl implements MessageListener, ChatStateListener { @Override public void processMessage(Chat chat, Message message) { processMessageCore(message); } @Override public void stateChanged(Chat chat, ChatState […]

使用Android的Smack Api发送和接收消息

我试着从过去四天开始使用自己的XMPP和Smack + OpenFire发送和接收聊天消息。 根据Smack的“readme.txt”我build立了连接,并获得login用户。连接和login的代码是这个 public static String TAG = "Test connection"; private static XMPPTCPConnection connection; private static String userName = "demo"; private static String Password = "demo"; static { // Create the configuration for this new connection XMPPTCPConnectionConfiguration.Builder configBuilder = XMPPTCPConnectionConfiguration.builder(); configBuilder.setSecurityMode(XMPPTCPConnectionConfiguration.SecurityMode.disabled); configBuilder.setResource(""); configBuilder.setUsernameAndPassword(userName, Password); configBuilder.setServiceName("192.168.2.10"); configBuilder.setHost("192.168.2.10"); configBuilder.setPort(5222); configBuilder.setCompressionEnabled(false); connection = new XMPPTCPConnection(configBuilder.build()); } 这样我configuration了connectionbuilder。 […]

如何使用Smack API使用AccountManager的身份validation令牌对Google Talk进行身份validation?

这个问题类似于: 使用authTokenvalidationGoogle Talk(XMPP,Smack) 我有android.accounts.AccountManager类及其方法来获取Google帐户的身份validation令牌: public AccountManagerFuture<Bundle> getAuthToken (Account account, String authTokenType, Bundle options, Activity activity, AccountManagerCallback<Bundle> callback, Handler handler) 我知道如何准备authenticationXML: jidAndToken ="\0" + UTF8(YOURUSERNAME@gmail.com) + "\0" + Auth (其中“\ 0”打算是一个值为零的单个八位字节)。 在初始的SASLauthentication中使用这个: <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='X-GOOGLE-TOKEN'>Base64(jidAndToken)</auth> 但是我没有像Smack API那样整合它,就像有人在facebook这里聊天一样: XMPP与支持X-FACEBOOK-PLATFORM的Java Asmack库 有人能帮我吗?

XMPP与Android Studio上的Smack 4.1的连接

我试图从https://github.com/igniterealtime/Smack与Smack 4.1.0 rc1做一个XMPP连接我按照这个指南https://github.com/igniterealtime/Smack/wiki/Smack-4.1-Readme-升级指南“导入Gradle。 源代码: package com.example.xmpp_app; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.Menu; import android.view.MenuItem; import org.jivesoftware.smack.AbstractXMPPConnection; import org.jivesoftware.smack.SmackException; import org.jivesoftware.smack.XMPPException; import org.jivesoftware.smack.tcp.XMPPTCPConnection; import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration; import java.io.IOException; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Create the configuration for this new connection XMPPTCPConnectionConfiguration.Builder configBuilder = XMPPTCPConnectionConfiguration.builder(); configBuilder.setUsernameAndPassword("test@example.com", "password123"); configBuilder.setResource("test"); […]

如何知道使用Smack的XMPP openfire中的打字状态

我正在使用Openfire XMPP服务器开发聊天应用程序。 我可以两个用户之间的文字聊天。 但是我想知道打字时的状态。 所以我创build了一个类: public class typingStatus implements ChatStateListener { @Override public void processMessage(Chat arg0, Message arg1) { // TODO Auto-generated method stub } @Override public void stateChanged(Chat arg0, ChatState arg1) { // TODO Auto-generated method stub System.out.println(arg0.getParticipant() + " is " + arg1.name()); } } 但我很迷惑,它会如何工作? 我知道,我需要一个数据包,我可以在听众。 但我无法find这个数据包。 请有人build议,它将如何工作? 还有Smack和asmack有什么区别? 谢谢!

Smack“必须有本地(用户)JID设置”错误

无法理解为什么这个错误经常出现,应用程序崩溃。 下面的错误: Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.studyboard/com.studyboard.ChatMessageActivity}: java.lang.IllegalArgumentException: Must have a local (user) JID set. Either you didn't configure one or you where not connected at least once at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2493) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2555) at android.app.ActivityThread.access$800(ActivityThread.java:176) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1437) at android.os.Handler.dispatchMessage(Handler.java:111) at android.os.Looper.loop(Looper.java:194) at android.app.ActivityThread.main(ActivityThread.java:5576) at java.lang.reflect.Method.invoke(Method.java) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:956) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:751) Caused by […]

SMACK XEP-313的实施

有必要在SMACK / ASMACK中附加0313 XEP(0.2) http://xmpp.org/extensions/attic/xep-0313-0.2.html#sect-idp616432 。 我为此创build了PacketExtension。 public class Archive313 implements PacketExtension { static final public String NAMESPACE = "urn:xmpp:mam:tmp"; static final public String ELEMENT = "result"; private String Id; private String Queryid; private String Stamp; private String To; private String From; private String Type; private String Body; public Archive313(String id, String queryid, String stamp, […]

如何使用aSmack在Android设备上获取Openfire聊天logging?

我正在开发一个聊天应用程序,用户将与其中一个域专家的组成员聊天。 用户使用我的Android应用程序和领域专家使用火花网聊天。 我做了Openfire安装程序和Spark web安装程序,并开发了Android聊天应用程序和一个Smack库。 我的应用程序用户可以与域专家聊天。 到目前为止,这很好。 现在我想在Android设备上显示任何或特定专家的用户的聊天logging。 在浏览网页后,我可以为我的明火服务器安装监控服务插件,该服务器显示了pipe理员侧的用户聊天logging,如下所示。 现在我想在我的Android应用程序中显示这个历史logging,我该如何实现这一点。 任何build议,最受欢迎。 我正朝着正确的方向前进吗? 或者有什么简单的方法来做我的工作? 任何有关此聊天logging将存储在Openfire数据库中的信息,以便我可以使用Web服务进行SQL查询和获取数据。