我正在使用asmack库实现聊天应用程序.我想启动一个始终运行的服务,其中所有的连接管理任务都要完成,并且应该继续接收传入的数据包并将消息保存在我的sqlite数据库中.当我的应用程序启动时,我希望我的应用程序也会收到通知消息,而后台服务将消息插入sqlite数据库.如何用粘性服务实现这样的结构.是否还需要部分唤醒锁定.因为,有时也会根据特定需求使用http来下载图像.
我正在使用asmack作为库和Android平台上的聊天应用程序.是否有任何方法,在添加名册中的朋友之前,我可以检查服务器上是否存在该朋友?
我正在使用Xabber开源项目,并且能够创建一个新组,但它总是说:这个房间从入口锁定,直到配置得到确认.我试图设置默认配置,但它抛出异常: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();
}
Run Code Online (Sandbox Code Playgroud) 我想阻止聊天列表中的某位朋友XMPP.代码工作正常.没有例外,但我无法阻止用户.我正在使用开火服务器.我应该在服务器上做些什么改变?
你们有什么想法吗?
我的代码:
public void XMPPAddNewPrivacyList(Connection connection, String userName) {
String listName = "newList";
// Create the list of PrivacyItem that will allow or
// deny some privacy aspect
List<PrivacyItem> privacyItems = new Vector<PrivacyItem>();
PrivacyItem item = new PrivacyItem(PrivacyItem.Type.jid.toString(),
false, 1);
item.setValue(userName);
privacyItems.add(item);
// Create the new list.
try {
PrivacyListManager privacyManager = new PrivacyListManager(connection);
privacyManager = PrivacyListManager
.getInstanceFor(connection);
privacyManager.createPrivacyList(listName, privacyItems);
} catch (XMPPException e) {
System.out.println("PRIVACY_ERROR: " + e);
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试在Android 4.2.2上使用sSck-8-4-rc2为学校项目制作一个支持XMPP的小型聊天应用程序,并且我在获取ChatManager对象来处理传入消息时遇到问题.
到目前为止我见过的每个例子都有
ChatManager manager = connection.getChatManager();
Run Code Online (Sandbox Code Playgroud)
但是,似乎在开发过程中的某个时刻,函数getChatManager()被删除或从类中替换XMPPConnection(或者XMPPTCPConnection,因为前者似乎已被弃用),我无法找到任何文档或示例,这些文档或示例可以为我提供任何指示我能得到的替代品.
我尝试使用类中的构造函数ChatManager.它似乎有一个构造函数,虽然是私有的,因此我无法创建该对象.我假设它打算成为一个单身人士,但我还没有找到一种方法来实现它.
有人知道这个功能移到哪里了吗?
请问有人能告诉我使用asmack库和XMPP协议从openfire服务器到android客户端应用程序检索聊天记录的确切代码吗?在我的openfire服务器中,我启用了合并的监控服务/开放存档服务以及成功存储到数据库中的所有消息.但我不知道这些消息(聊天记录)如何检索到我在ANDROID中构建的客户端应用程序.我需要什么类型的聊天是一对一的用户聊天(不是群聊).
我成功ED,这是让组聊天记录与帮助这个,但我想找回一对一的聊天记录
如果有人能给我写一个代码,我将非常感激.
谢谢!
我一直试图在Android中使用smack 4.1 beta 2来获取名单条目.
https://github.com/igniterealtime/Smack/wiki/Smack-4.1-Readme-and-UpgradeGuide 来自以上链接的报价..
"Roster现在遵循Manager模式(使用Roster.instanceFor获取实例,不再使用XMPPConnection.getRoster)"
首先,我无法获得"名册"对象,我导入的库可能没有该包,或者我在这里想念任何库?
我使用上面链接中提到的所有库.
任何人都可以帮助我使用smack 4.1获取名册条目吗?
谢谢
我正在使用aSmack和Openfire进行聊天应用.我能够很好地发送和接收消息.当收件人离线时,Openfire支持离线邮件传输,通过保持消息直到他联机.
但是当发件人离线或他的互联网在通信之间掉线时该怎么办?
是否有任何api由aSmack/Smack提供,它会在互联网恢复之前保留消息?
或者我应该通过SQLite发送消息?
我在使用XMPP(4.1.3)创建聊天组时遇到问题.
我的代码是
try{
// Get the MultiUserChatManager
MultiUserChatManager manager = MultiUserChatManager.getInstanceFor(ClosrrService.xmppConnection);
Log.e("Connection : ", ClosrrService.xmppConnection.toString());
// Get a MultiUserChat using MultiUserChatManager
MultiUserChat muc = manager.getMultiUserChat("dayaroom@conference."+Constants.HOST);
// Create the room and send an empty configuration form to make this an instant room
muc.create("testbotdaya");
muc.sendConfigurationForm(new Form(DataForm.Type.submit));
}catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码我得到例外muc.create("testbotdaya");,异常是
org.jivesoftware.smack.XMPPException$XMPPErrorException: XMPPError: service-unavailable - cancel
W/System.err? at org.jivesoftware.smack.PacketCollector.nextResultOrThrow(PacketCollector.java:232)
W/System.err? at org.jivesoftware.smackx.muc.MultiUserChat.enter(MultiUserChat.java:311)
W/System.err? at org.jivesoftware.smackx.muc.MultiUserChat.createOrJoin(MultiUserChat.java:400)
at org.jivesoftware.smackx.muc.MultiUserChat.createOrJoin(MultiUserChat.java:376)
W/System.err? at org.jivesoftware.smackx.muc.MultiUserChat.create(MultiUserChat.java:354)
W/System.err? at com.rappier.closrr.chat.grpupchat.CreateGroupActivity.createGroup(CreateGroupActivity.java:82)
W/System.err? at com.rappier.closrr.chat.grpupchat.CreateGroupActivity.onClick(CreateGroupActivity.java:64)
Run Code Online (Sandbox Code Playgroud)
请帮我.提前感谢.
我正在Android平台上使用XMPP协议和Openfire服务器实现消息传递应用程序.我需要保存并加载自己的Vcard和其他用户vcard.目前,我设法将我的vCard保存在服务器上并可以再次加载它.问题在于其他用户的Vcards,服务器总是返回XMPPError:功能未实现 - 取消.
我用这个库:
compile 'org.igniterealtime.smack:smack-android:4.1.2-SNAPSHOT'
compile 'org.igniterealtime.smack:smack-tcp:4.1.2-SNAPSHOT'
compile 'org.igniterealtime.smack:smack-extensions:4.1.2-SNAPSHOT'
Run Code Online (Sandbox Code Playgroud)
显示代码:
保存我自己的Vcard(工作正常).
VCardManager vCardManager = VCardManager.getInstanceFor(connection);
VCard vCard;
vCard = vCardManager.loadVCard();
vCard.setNickName("User name");
URL urldefault = new URL("Avatar URL");
InputStream stream = urldefault.openStream();
byte[] avatar1 = readBytes(stream);
vCard.setAvatar(avatar1, "avatar1/jpg");
vCard.setEmailHome("user email");
vCard.setPhoneHome("mobile", "888888888");
vCardManager.saveVCard(vCard);
Run Code Online (Sandbox Code Playgroud)
加载我自己的Vcard(工作正常)
VCard vCard = null;
VCardManager vCardManager = VCardManager.getInstanceFor(connection);
vCard = vCardManager.loadVCard();
Run Code Online (Sandbox Code Playgroud)
问题出在这里.加载其他用户Vcard:
VCardManager vCardManager = VCardManager.getInstanceFor(connection);
boolean isSupported = vCardManager.isSupported(user);
if (isSupported) // return true
vCard = vCardManager.loadVCard(user);
Run Code Online (Sandbox Code Playgroud)
加载Vcard的用户名是正确的.
有任何想法吗?
提前致谢.