标签: asmack

无法使用Android的aSmack库创建多用户聊天(MUC)房间:"packet.DefaultPacketExtension无法强制转换为packet.MUCUser"

对于一个应用程序,我需要能够创建一个多用户聊天室并加入它.聊天服务器是一个openfire服务器.

我曾经有过:

MultiUserChat chat = new MultiUserChat(connection, roomName + "@conference.localhost");
chat.join(nickname);
Run Code Online (Sandbox Code Playgroud)

当房间不存在时,它会创建房间并加入.但是下一个用户无法加入.他得到了404,收件人不可用(404).这表明聊天室被锁定了什么.

然后我在文档中找到了代码并尝试了以下内容:

chat.create(nickname);

// Send an empty room configuration form which indicates that we want
// an instant room
chat.sendConfigurationForm(new Form(Form.TYPE_SUBMIT));
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试执行此操作时,它说它在logcat中崩溃并出现以下错误:

03-02 12:04:12.890: E/AndroidRuntime(20872): FATAL EXCEPTION:

 AsyncTask #3 03-02 12:04:12.890: E/AndroidRuntime(20872):

 java.lang.RuntimeException: An error occured while executing
 doInBackground() 
03-02 12:04:12.890: E/AndroidRuntime(20872): Caused
 by: java.lang.ClassCastException:

 org.jivesoftware.smack.packet.DefaultPacketExtension cannot be cast to
 org.jivesoftware.smackx.packet.MUCUser 03-02 12:04:12.890:
 E/AndroidRuntime(20872):   at
 org.jivesoftware.smackx.muc.MultiUserChat.getMUCUserExtension(MultiUserChat.java:2002)
 03-02 12:04:12.890: E/AndroidRuntime(20872):   at
 org.jivesoftware.smackx.muc.MultiUserChat.create(MultiUserChat.java:364)
 03-02 12:04:12.890: E/AndroidRuntime(20872):   at
 be.xios.crs.pivi.managers.XmppManager.createOrJoinChatGroup(XmppManager.java:116)
Run Code Online (Sandbox Code Playgroud)

希望有人可以帮助我,并提供一些建议.

android xmpp asmack

12
推荐指数
2
解决办法
8930
查看次数

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

我正在开发一个聊天应用程序,用户将与域专家的一个组成员聊天.用户使用我的Android应用程序和域专家使用spark web进行聊天.我制作了Openfire安装程序和Spark Web设置,并使用aSmack库开发了Android聊天应用程序.我的应用用户可以与域专家聊天.到目前为止一切都很好.现在,我想在Android设备上显示用户与任何或特定专家的聊天记录.浏览网页后,我可以为我的开放式服务器安装Monitoring Service插件,该服务器显示管理员端用户的聊天记录,如下所示.在此输入图像描述

现在我想在我的Android应用程序中展示这段历史,我该如何实现这一目标.任何建议,最受欢迎.我正朝着正确的方向前进吗?还是有简单的方法来完成我的工作?有关此聊天历史记录将存储在Open Fire数据库中的任何信息,以便我可以使用Web服务进行SQL查询和获取数据,这是非常感谢.

android chat xmpp smack asmack

10
推荐指数
1
解决办法
6700
查看次数

Android Studio上与Smack 4.1的XMPP连接

我试图通过https://github.com/igniterealtime/Smack与Smack 4.1.0 rc1进行XMPP连接

我遵循了这个指南:https://github.com/igniterealtime/Smack/wiki/Smack-4.1-Readme-and-Upgrade-Guide导入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");
        configBuilder.setServiceName("example.com");

        AbstractXMPPConnection connection = new XMPPTCPConnection(configBuilder.build());
        // Connect to the server
        try {
            connection.connect();
        } catch (SmackException e) …
Run Code Online (Sandbox Code Playgroud)

java android xmpp smack asmack

10
推荐指数
1
解决办法
2万
查看次数

如何在asmack,android中使用户在线或离线

可能重复:
XMPP aSmack - 如何获取当前用户状态(离线/在线/离开/等)?

我正在开发基于asmack lib的Android上的聊天应用程序.我在ListView上显示所有用户,但我使用图像显示在线/离线用户.但它只返回离线图像,即使用户在线,这里是我的代码

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // setContentView(R.layout.buddies);

    Controller.getInstance().roster = Controller.getInstance().connection.getRoster();
//  ArrayList<Buddy> buddies = new ArrayList<Buddy>();
    Collection<RosterEntry> entries = Controller.getInstance().roster.getEntries();
    Controller.getInstance().buddyList = new Buddy[entries.size()];

    int i = 0;

    for (RosterEntry r : entries) {
        Buddy bud = new Buddy();
        VCard card = new VCard();
        try {
            ProviderManager.getInstance().addIQProvider("vCard",
                    "vcard-temp", new VCardProvider());
            card.load(Controller.getInstance().connection, r.getUser());
        } catch (XMPPException e) {
            Log.e("ChatOnAndroid", e.getMessage() + " " + r.getUser() + " "
                    + e.getLocalizedMessage());
        }
        bud.jid …
Run Code Online (Sandbox Code Playgroud)

android openfire smack asmack

9
推荐指数
1
解决办法
8077
查看次数

登录时的XMPP"stream:error(conflict)"(a)Smack

目前我正在使用xmpp/jabber聊天for android.i刚尝试使用Openfire并尝试连接我的jabber account.connection成功.但我无法发送任何message.it显示一些冲突错误.请检查错误日志给我一个解决方案.

Initializing connection to server eworks port 5222
Connected: true
Creating entry for buddy 'testuser2' with name testuser2
Sending mesage 'Hello mate' to user testuser2@eworks
Buddy:testuser2 - Status:null
stream:error (conflict)
at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:306)
at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:44)
at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:76)
Run Code Online (Sandbox Code Playgroud)

xmpp smack asmack

9
推荐指数
1
解决办法
8257
查看次数

发送和接收IQ XMPP ASMACK Android

背景:

我已经能够XMPP在android中使用asmack库实现一对一聊天.我也可以向服务器发送状态.我在OpenFire基于聊天的应用程序中使用服务器.

问题: 我正在使用connection.addPacketListener(new PacketListener() 接收消息和IQ数据包,对于我已经将它分类的消息包

PacketFilter Chatfilter = new MessageTypeFilter(Message.Type.chat);
connection.addPacketListener(new PacketListener() {
        public void processPacket(Packet packet) {
            Message message = (Message) packet;
            if (message.getBody() != null) {
                String fromName = StringUtils.parseBareAddress(message.getFrom());
                Log.i("XMPPClient", "Got text [" + message.getBody() + "] from [" + fromName + "]");
                messages.add(fromName + ":");
                m1=message.getBody();
                messages.add(message.getBody());
                // Add the incoming message to the list view
                /* mHandler.post(new Runnable() {
                public void run() {
                setListAdapter();
                recieve.setText(m1);
                }
                });*/ …
Run Code Online (Sandbox Code Playgroud)

java sockets android xmpp asmack

9
推荐指数
1
解决办法
5261
查看次数

如何实现消息读取状态,如whatsapp蓝色刻度?

我正在开发一个应用程序,聊天是一个模块,聊天我正在使用xmpp.当我发送消息时,我使用DeliveryReceiptManager获取该消息传递状态.

DeliveryReceiptManager.getInstanceFor(connection).enableAutoReceipts();
DeliveryReceiptManager.getInstanceFor(connection).addReceiptReceivedListener(new ReceiptReceivedListener()
{
        @Override
        public void onReceiptReceived(String arg0, String arg1, String arg2)
        {
            Log.v("app", arg0 + ", " + arg1 + ", " + arg2);
        }
});
Run Code Online (Sandbox Code Playgroud)

但我需要证明该消息是用户READ或不像whatsApp蓝色tickmark,任何人都可以帮助我,我在这里被击中.如何实现此消息读取概念.

提前致谢.

android xmpp smack asmack

9
推荐指数
1
解决办法
1万
查看次数

SMACK XEP-313实施

有必要将0313 XEP(0.2)http://xmpp.org/extensions/attic/xep-0313-0.2.html#sect-idp616432附加 到SMACK/ASMACK中.我为此创建了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, String to, String from, String type, String body) {
        Id = id;
        Queryid = queryid;
        Stamp = stamp;
        To = to;
        From = from;
        Type = type; …
Run Code Online (Sandbox Code Playgroud)

java android xmpp smack asmack

9
推荐指数
1
解决办法
1174
查看次数

Android文件传输无法通过XMPP和OpenFire工作

问题:无法通过XMPP和OpenFire Server接收发送到我的Android应用程序的文件.我可以成功发送文件.我使用的asmack jar是asmack-jse-buddycloud-2010.12.11.jar

代码:

    connConfig = new ConnectionConfiguration("beta.myCompany.co.uk", 5222);
    connConfig.setSASLAuthenticationEnabled(true);
    try {
        connect("username", "password");
    } catch (Exception e) {
        e.printStackTrace();
    }

    ServiceDiscoveryManager sdm = ServiceDiscoveryManager.getInstanceFor(connection);
    if(sdm == null)
        sdm = new ServiceDiscoveryManager(connection);

    fileTransferManager = new FileTransferManager(connection);
    FileTransferNegotiator.setServiceEnabled(connection, true);

fileTransferManager.addFileTransferListener(new FileTransferListener() {
    @Override
    public void fileTransferRequest(FileTransferRequest request) {
        IncomingFileTransfer transfer = request.accept();
        try {
            FileOutputStream fos = openFileOutput(request.getFileName(), Context.MODE_PRIVATE);
            InputStream stream = transfer.recieveFile();//THIS FAILS!
            fos.write(IOUtils.toByteArray(stream));
            fos.close();    
        } catch (Exception e) {
            e.printStackTrace();
        }
}
Run Code Online (Sandbox Code Playgroud)

错误(如果文件是通过Spark发送的): …

android xmpp openfire file-transfer asmack

8
推荐指数
1
解决办法
8748
查看次数

Smack(XMPP)聊天应用程序的Android后台服务

我正在使用asmack库实现聊天应用程序.我想启动一个始终运行的服务,其中所有的连接管理任务都要完成,并且应该继续接收传入的数据包并将消息保存在我的sqlite数据库中.当我的应用程序启动时,我希望我的应用程序也会收到通知消息,而后台服务将消息插入sqlite数据库.如何用粘性服务实现这样的结构.是否还需要部分唤醒锁定.因为,有时也会根据特定需求使用http来下载图像.

android xmpp smack asmack

8
推荐指数
1
解决办法
4324
查看次数

标签 统计

asmack ×10

android ×9

xmpp ×9

smack ×7

java ×3

openfire ×2

chat ×1

file-transfer ×1

sockets ×1