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

第一步,在openfire后台中创建一些用户,并添加两个组。我这里添加的两个组是:我的聊天小组、篮球。
[img]

[/img]


第二步,编辑组,把用户添加到组中。
[img]

[/img]

[img]

[/img]



第三步,客户端代码如下:
(MainActivity 同上篇,未做修改)
Java代码 复制代码  收藏代码
  1. package com.example.openfiretest;   
  2.   
  3. import android.os.Bundle;   
  4. import android.app.Activity;   
  5. import android.view.Menu;   
  6. import android.view.View;   
  7. import android.view.View.OnClickListener;   
  8. import android.view.Window;   
  9. import android.widget.CheckBox;   
  10. import android.widget.EditText;   
  11. import android.widget.Toast;   
  12.   
  13. public class MainActivity extends Activity {   
  14.   
  15.     private EditText accountEditText;   
  16.     private EditText passwordEditText;   
  17.   
  18.     public void onCreate(Bundle savedInstanceState) {   
  19.         super.onCreate(savedInstanceState);   
  20.         requestWindowFeature(Window.FEATURE_NO_TITLE);   
  21.         setContentView(R.layout.activity_main);   
  22.         accountEditText = (EditText) findViewById(R.id.username);   
  23.         passwordEditText = (EditText) findViewById(R.id.password);   
  24.   
  25.         findViewById(R.id.login).setOnClickListener(new OnClickListener() {   
  26.             public void onClick(View v) {   
  27.                 String account = accountEditText.getText().toString();   
  28.                 String password = passwordEditText.getText().toString();   
  29.                 if (account.equals("") || password.equals("")) {   
  30.                     Toast.makeText(MainActivity.this"账号或密码不能为空!",   
  31.                             Toast.LENGTH_SHORT).show();   
  32.                 } else {   
  33.                     ClientConServer ccs = new ClientConServer(MainActivity.this);   
  34.                     boolean b = ccs.login(account, password);   
  35.                     // 如果登录成功   
  36.                     if (b) {   
  37.                         Toast.makeText(MainActivity.this"登陆成功!",   
  38.                                 Toast.LENGTH_SHORT).show();   
  39.                         // startActivity(new  
  40.                         // Intent(LoginActivity.this,MainActivity.class));  
  41.                         // MainActivity.account=account;  
  42.                     } else {   
  43.                         Toast.makeText(MainActivity.this"登陆失败!",   
  44.                                 Toast.LENGTH_SHORT).show();   
  45.                     }   
  46.                 }   
  47.             }   
  48.         });   
  49.     }   
  50. }  
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();
					}
				}
			}
		});
	}
}


下面的比上篇的略做修改,添加获取组个数、组名称、组成员名称等代码:
Java代码 复制代码  收藏代码
  1. package com.example.openfiretest;   
  2.   
  3. import java.util.Collection;   
  4.   
  5. import org.jivesoftware.smack.ConnectionConfiguration;   
  6. import org.jivesoftware.smack.Roster;   
  7. import org.jivesoftware.smack.RosterEntry;   
  8. import org.jivesoftware.smack.RosterGroup;   
  9. import org.jivesoftware.smack.XMPPConnection;   
  10. import org.jivesoftware.smack.XMPPException;   
  11.   
  12. import android.content.Context;   
  13. import android.util.Log;   
  14. import android.widget.Toast;   
  15.   
  16. public class ClientConServer {   
  17.     private static int PORT=5222;   
  18.     private Context context;   
  19.     public ClientConServer(Context context){   
  20.         this.context=context;   
  21.   
  22.     }   
  23.        
  24.     public boolean login(String a,String p){   
  25.         ConnectionConfiguration config = new ConnectionConfiguration("192.168.0.124", PORT);   
  26.         /** 是否启用安全验证 */  
  27.         config.setSASLAuthenticationEnabled(false);   
  28.         /** 是否启用调试 */  
  29.         //config.setDebuggerEnabled(true);  
  30.         /** 创建connection链接 */  
  31.         XMPPConnection connection = new XMPPConnection(config);   
  32.         try {   
  33.             /** 建立连接 */  
  34.             connection.connect();   
  35.                
  36.                
  37.             /** 登录*/  
  38.             connection.login(a, p);   
  39.             /** 开启读写线程,并加入到管理类中*/  
  40.             //ClientSendThread cst=new ClientSendThread(connection);  
  41.             //cst.start();   
  42.             //ManageClientThread.addClientSendThread(a, cst);  
  43.                
  44.                
  45.             System.out.println("======开始获取组及用户==========");   
  46.             Roster roster = connection.getRoster();   
  47.             Collection<RosterGroup> entriesGroup = roster.getGroups();   
  48.             System.out.println("组的个数:"+entriesGroup.size());   
  49.             for(RosterGroup group: entriesGroup){   
  50.                 Collection<RosterEntry> entries = group.getEntries();   
  51.                 System.out.println("=========groupName==="+group.getName());   
  52.                 for (RosterEntry entry : entries) {   
  53.                     //Presence presence = roster.getPresence(entry.getUser());  
  54.                     //Log.i("---", "user: "+entry.getUser());  
  55.                     Log.i("TAG""name: "+entry.getName());   
  56.                     System.out.println("组成员名字:"+entry.getName());   
  57.                     //Log.i("---", "tyep: "+entry.getType());  
  58.                     //Log.i("---", "status: "+entry.getStatus());  
  59.                     //Log.i("---", "groups: "+entry.getGroups());  
  60.                 }   
  61.             }   
  62.             System.out.println("======结束获取组及用户==========");   
  63.                
  64.                
  65.                
  66.                
  67.                
  68.                
  69.                
  70.                
  71.                
  72.                
  73.             return true;   
  74.         } catch (XMPPException e) {   
  75.             e.printStackTrace();   
  76.         }   
  77.         return false;   
  78.      }   
  79. }  
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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值