`

Android基于XMPP Smack Openfire开发IM 【二】获取好友列表

    博客分类:
  • xmpp
阅读更多
第一步,在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
分享到:
评论
1 楼 Silence222 2013-09-16  
组成员获取为空?怎么解决?

相关推荐

    Android 基于xmpp协议,smack包,openfire服务端的高仿QQ的即时通讯实现.zip

    综上所述,这个项目涉及到的技术栈包括XMPP协议、Smack库的使用、Openfire服务器的部署和配置,以及Android应用开发中的UI设计、安全性和性能优化。通过这些技术的结合,可以构建出一个功能完善的即时通讯应用,为...

    Android-XMPP-openfire-实现IM

    在Android平台上实现即时通讯(Instant Messaging,简称IM)系统,XMPP(Extensible Messaging and Presence Protocol)是一种常用的标准协议,而Openfire是一款基于XMPP的开源服务器软件。本项目"Android-XMPP-...

    XMPP_OPenfire即时通讯IM-android版

    在这个“XMPP_OPenfire即时通讯IM-android版”项目中,我们关注的是在Android平台上利用Smack库实现与Openfire服务器的交互。 Smack是一个流行的Java库,支持XMPP协议,允许开发者在Java应用程序中实现IM功能。在这...

    Android 基于xmpp协议,smack包,openfire服务端的高仿QQ的即时通讯实现.

    Android 基于xmpp协议,smack包,openfire服务端的高仿QQ的即时通讯实现。实现了注册,登录,读取好友列表,搜索好友,添加分组,添加好友,删除好友,修改心情,两个客户端之间的信息发送与接收,监听发送来的好友...

    基于openfire 的android IM 即时通讯smack的android IM

    本教程将聚焦于如何利用Openfire服务器和Smack库构建一个基于Android的IM应用。 Openfire是一款开源的、基于XMPP协议的实时通讯服务器。XMPP(Extensible Messaging and Presence Protocol)是一种标准通信协议,...

    Android XMPP 即时通讯 Openfire二次开发资料,非常齐

    Android XMPP 即时通讯 Openfire 二次开发是基于 XMPP 协议的即时通讯解决方案,使用 Openfire 作为服务器端,Spark 作为客户端,Smack 作为 XMPP 传输协议的实现。XMPP 协议是一个基于 XML 的消息传递协议,...

    android使用smack,openfire通信

    Android上最常用的组合asmack +openfire。Asmack是smack的android版,是对xmpp协议进行...Openfire是一个开源的IM服务器,基于Xmpp实现。换句话说使用xmpp开发即时通讯应用的话,服务器端已经开发好了,就是openfire。

    android XMPP openfire

    Android XMPP(Extensible Messaging and Presence Protocol)是用于在Android平台上实现即时通讯(IM)的一种技术,它基于开放源码的XMPP协议栈。Openfire是XMPP服务器的一个实现,用Java编写,提供了实时、双向的...

    Android代码-基于openfire和smack的安卓xmpp客户端

    【Android代码-基于openfire和smack的安卓xmpp客户端】是一个项目,它实现了使用XMPP协议在Android设备上创建一个客户端应用。XMPP(Extensible Messaging and Presence Protocol)是一种实时通信协议,常用于实现...

    Android使用XMPP协议、OpenFire服务器和Smack类库实现即时通信

    OpenFire是一款免费、开源的XMPP服务器,它支持多种操作系统,并且提供丰富的API供开发者进行二次开发。安装和配置OpenFire相对简单,开发者可以通过Web界面进行管理,包括创建用户、设置群组等。 接着,我们引入...

    android openfire xmpp smack即时通讯,包括:聊天发生文字,表情,图片,语音等.zip

    本项目聚焦于Android平台上的即时通讯实现,利用了开源的服务器端软件Openfire以及客户端库Smack。Openfire基于XMPP(Extensible Messaging and Presence Protocol)协议,这是一种开放标准,被广泛用于构建即时通讯...

    Android IM之基于Openfire+Smack的聊天服务器的搭建与测试

    在开发过程中,遇到问题可以参考Openfire和Smack的官方文档,或者查阅CSDN等开发者社区的相关博客,如上述链接中的博客文章,获取更多帮助。务必保持代码的健壮性和安全性,例如使用安全的网络连接、处理可能的并发...

    Android+smack4.1.4+openfire demo

    通过这个“Android+smack4.1.4+openfire demo”,开发者可以学习如何在Android应用中实现实时通信功能,包括连接Openfire服务器、登录、获取好友列表以及发送和接收消息。这个示例代码可以作为Android即时通讯应用...

    IM(Spark+Smack+Openfire)开发资料详细说明文档

    本文档详细介绍了基于Spark、Smack和Openfire构建IM系统的开发过程和关键知识点,旨在帮助开发者更好地理解和实践。 1. **Spark**: Spark是一款开源的Web即时通讯客户端,支持多种平台,包括Windows、Linux和Mac ...

    Android XMPP例子(Openfire+asmack+spark)

    Android XMPP例子(Openfire+asmack+spark)是一个典型的基于Android平台的即时通讯(Instant Messaging,IM)应用实现,利用了XMPP协议、Openfire服务器、asmack库以及Spark客户端工具。XMPP(Extensible Messaging ...

    openfire+smack开发webim笔记

    总结:通过"openfire+smack"开发WebIM,我们可以理解到XMPP协议在Web即时通讯中的重要性,以及Openfire作为服务器软件的角色。同时,Smack库简化了Java应用与XMPP服务器的交互。WebIM的实现方式多样化,包括Ajax、...

    openfire+spark+smack开发流程.pdf

    在本文中,我们将详细介绍OpenFire、Spark和Smack三个组件在XMPP IM开发中的作用,以及如何使用它们来开发一个完整的XMPP IM系统。 首先,让我们了解一下XMPP是什么?Extensible Messaging and Presence Protocol,...

    Android 基于XMPP协议IM聊天实现(客户端+服务端) 源码

    在本文中,我们将深入探讨如何使用XMPP协议在Android平台上实现一个完整的即时通讯(IM)系统,包括客户端和服务器端的实现。XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的开放标准,广泛用于...

    基于openfire为服务器的xmpp即时通信 Android客户端

    【描述】:“基于openfire为服务器的xmpp即时通信 Android客户端”描述了在Android平台上开发客户端应用的过程,该应用能够与openfire服务器进行交互,实现用户之间的即时消息传递、在线状态显示以及群聊等功能。...

    基于Smack3.0.4+ Openfire3.10.2开发之Android 客户端之三

    在本教程中,我们将深入探讨如何使用Smack 3.0.4库和Openfire 3.10.2服务器来开发一个Android客户端,重点在于实现用户登录、注册功能以及与XMPP服务器的交互。首先,让我们理解这两个关键组件。 **Smack 3.0.4** ...

Global site tag (gtag.js) - Google Analytics