第一步,在openfire后台中创建一些用户,并添加两个组。我这里添加的两个组是:我的聊天小组、篮球。
[img]
[/img]
第二步,编辑组,把用户添加到组中。
[img]
[/img]
[img]
[/img]
第三步,客户端代码如下:
(MainActivity 同上篇,未做修改)
package com.example.openfiretest;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
private EditText accountEditText;
private EditText passwordEditText;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
accountEditText = (EditText) findViewById(R.id.username);
passwordEditText = (EditText) findViewById(R.id.password);
findViewById(R.id.login).setOnClickListener(new OnClickListener() {
public void onClick(View v) {
String account = accountEditText.getText().toString();
String password = passwordEditText.getText().toString();
if (account.equals("") || password.equals("")) {
Toast.makeText(MainActivity.this, "账号或密码不能为空!",
Toast.LENGTH_SHORT).show();
} else {
ClientConServer ccs = new ClientConServer(MainActivity.this);
boolean b = ccs.login(account, password);
// 如果登录成功
if (b) {
Toast.makeText(MainActivity.this, "登陆成功!",
Toast.LENGTH_SHORT).show();
// startActivity(new
// Intent(LoginActivity.this,MainActivity.class));
// MainActivity.account=account;
} else {
Toast.makeText(MainActivity.this, "登陆失败!",
Toast.LENGTH_SHORT).show();
}
}
}
});
}
}
下面的比上篇的略做修改,添加获取组个数、组名称、组成员名称等代码:
package com.example.openfiretest;
import java.util.Collection;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.Roster;
import org.jivesoftware.smack.RosterEntry;
import org.jivesoftware.smack.RosterGroup;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import android.content.Context;
import android.util.Log;
import android.widget.Toast;
public class ClientConServer {
private static int PORT=5222;
private Context context;
public ClientConServer(Context context){
this.context=context;
}
public boolean login(String a,String p){
ConnectionConfiguration config = new ConnectionConfiguration("192.168.0.124", PORT);
/** 是否启用安全验证 */
config.setSASLAuthenticationEnabled(false);
/** 是否启用调试 */
//config.setDebuggerEnabled(true);
/** 创建connection链接 */
XMPPConnection connection = new XMPPConnection(config);
try {
/** 建立连接 */
connection.connect();
/** 登录*/
connection.login(a, p);
/** 开启读写线程,并加入到管理类中*/
//ClientSendThread cst=new ClientSendThread(connection);
//cst.start();
//ManageClientThread.addClientSendThread(a, cst);
System.out.println("======开始获取组及用户==========");
Roster roster = connection.getRoster();
Collection<RosterGroup> entriesGroup = roster.getGroups();
System.out.println("组的个数:"+entriesGroup.size());
for(RosterGroup group: entriesGroup){
Collection<RosterEntry> entries = group.getEntries();
System.out.println("=========groupName==="+group.getName());
for (RosterEntry entry : entries) {
//Presence presence = roster.getPresence(entry.getUser());
//Log.i("---", "user: "+entry.getUser());
Log.i("TAG", "name: "+entry.getName());
System.out.println("组成员名字:"+entry.getName());
//Log.i("---", "tyep: "+entry.getType());
//Log.i("---", "status: "+entry.getStatus());
//Log.i("---", "groups: "+entry.getGroups());
}
}
System.out.println("======结束获取组及用户==========");
return true;
} catch (XMPPException e) {
e.printStackTrace();
}
return false;
}
}
第四步:启动android客户端进行用户登陆:
[img]
[/img]
第五步,查看控制台打印结果如下:
[img]
[/img]
- 大小: 17.4 KB
- 大小: 42.3 KB
- 大小: 31.5 KB
- 大小: 29.2 KB
- 大小: 16.6 KB
分享到:
相关推荐
综上所述,这个项目涉及到的技术栈包括XMPP协议、Smack库的使用、Openfire服务器的部署和配置,以及Android应用开发中的UI设计、安全性和性能优化。通过这些技术的结合,可以构建出一个功能完善的即时通讯应用,为...
在Android平台上实现即时通讯(Instant Messaging,简称IM)系统,XMPP(Extensible Messaging and Presence Protocol)是一种常用的标准协议,而Openfire是一款基于XMPP的开源服务器软件。本项目"Android-XMPP-...
在这个“XMPP_OPenfire即时通讯IM-android版”项目中,我们关注的是在Android平台上利用Smack库实现与Openfire服务器的交互。 Smack是一个流行的Java库,支持XMPP协议,允许开发者在Java应用程序中实现IM功能。在这...
Android 基于xmpp协议,smack包,openfire服务端的高仿QQ的即时通讯实现。实现了注册,登录,读取好友列表,搜索好友,添加分组,添加好友,删除好友,修改心情,两个客户端之间的信息发送与接收,监听发送来的好友...
本教程将聚焦于如何利用Openfire服务器和Smack库构建一个基于Android的IM应用。 Openfire是一款开源的、基于XMPP协议的实时通讯服务器。XMPP(Extensible Messaging and Presence Protocol)是一种标准通信协议,...
Android XMPP 即时通讯 Openfire 二次开发是基于 XMPP 协议的即时通讯解决方案,使用 Openfire 作为服务器端,Spark 作为客户端,Smack 作为 XMPP 传输协议的实现。XMPP 协议是一个基于 XML 的消息传递协议,...
Android上最常用的组合asmack +openfire。Asmack是smack的android版,是对xmpp协议进行...Openfire是一个开源的IM服务器,基于Xmpp实现。换句话说使用xmpp开发即时通讯应用的话,服务器端已经开发好了,就是openfire。
Android XMPP(Extensible Messaging and Presence Protocol)是用于在Android平台上实现即时通讯(IM)的一种技术,它基于开放源码的XMPP协议栈。Openfire是XMPP服务器的一个实现,用Java编写,提供了实时、双向的...
【Android代码-基于openfire和smack的安卓xmpp客户端】是一个项目,它实现了使用XMPP协议在Android设备上创建一个客户端应用。XMPP(Extensible Messaging and Presence Protocol)是一种实时通信协议,常用于实现...
OpenFire是一款免费、开源的XMPP服务器,它支持多种操作系统,并且提供丰富的API供开发者进行二次开发。安装和配置OpenFire相对简单,开发者可以通过Web界面进行管理,包括创建用户、设置群组等。 接着,我们引入...
本项目聚焦于Android平台上的即时通讯实现,利用了开源的服务器端软件Openfire以及客户端库Smack。Openfire基于XMPP(Extensible Messaging and Presence Protocol)协议,这是一种开放标准,被广泛用于构建即时通讯...
在开发过程中,遇到问题可以参考Openfire和Smack的官方文档,或者查阅CSDN等开发者社区的相关博客,如上述链接中的博客文章,获取更多帮助。务必保持代码的健壮性和安全性,例如使用安全的网络连接、处理可能的并发...
通过这个“Android+smack4.1.4+openfire demo”,开发者可以学习如何在Android应用中实现实时通信功能,包括连接Openfire服务器、登录、获取好友列表以及发送和接收消息。这个示例代码可以作为Android即时通讯应用...
本文档详细介绍了基于Spark、Smack和Openfire构建IM系统的开发过程和关键知识点,旨在帮助开发者更好地理解和实践。 1. **Spark**: Spark是一款开源的Web即时通讯客户端,支持多种平台,包括Windows、Linux和Mac ...
Android XMPP例子(Openfire+asmack+spark)是一个典型的基于Android平台的即时通讯(Instant Messaging,IM)应用实现,利用了XMPP协议、Openfire服务器、asmack库以及Spark客户端工具。XMPP(Extensible Messaging ...
总结:通过"openfire+smack"开发WebIM,我们可以理解到XMPP协议在Web即时通讯中的重要性,以及Openfire作为服务器软件的角色。同时,Smack库简化了Java应用与XMPP服务器的交互。WebIM的实现方式多样化,包括Ajax、...
在本文中,我们将详细介绍OpenFire、Spark和Smack三个组件在XMPP IM开发中的作用,以及如何使用它们来开发一个完整的XMPP IM系统。 首先,让我们了解一下XMPP是什么?Extensible Messaging and Presence Protocol,...
在本文中,我们将深入探讨如何使用XMPP协议在Android平台上实现一个完整的即时通讯(IM)系统,包括客户端和服务器端的实现。XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的开放标准,广泛用于...
【描述】:“基于openfire为服务器的xmpp即时通信 Android客户端”描述了在Android平台上开发客户端应用的过程,该应用能够与openfire服务器进行交互,实现用户之间的即时消息传递、在线状态显示以及群聊等功能。...
在本教程中,我们将深入探讨如何使用Smack 3.0.4库和Openfire 3.10.2服务器来开发一个Android客户端,重点在于实现用户登录、注册功能以及与XMPP服务器的交互。首先,让我们理解这两个关键组件。 **Smack 3.0.4** ...