上节openfire服务器已经搭建完成,这节看看,怎么使用smack基于xmpp协议登录openfire服务器,
在服务器中创建好测试的账号
下面看android客户端的代码,关于界面布局就不多说了,可以参考QQandroid客户端的界面:
Android高仿QQ登录界面 http://blog.csdn.net/vestigge/article/details/8124674
至于为什么要仿别人的东西,不是喜欢山寨,而是素材方便,总不能自己又编码,又当美工吧,时间都花在PS上面了,那样,元芳,你说是吧?
登录界面完成以后,下面是登陆的代码:
public class LoginActivity extends Activity{ private EditText accountEditText; private EditText passwordEditText; private CheckBox remeberCheckBox; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_login); accountEditText=(EditText) findViewById(R.id.login_account); passwordEditText=(EditText) findViewById(R.id.login_password); remeberCheckBox=(CheckBox) findViewById(R.id.login_remember); findViewById(R.id.login_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(LoginActivity.this, "账号或密码不能为空!", Toast.LENGTH_SHORT).show(); }else{ ClientConServer ccs=new ClientConServer(LoginActivity.this); boolean b=ccs.login(account,password); //如果登录成功 if(b){ Toast.makeText(LoginActivity.this, "登陆成功!", Toast.LENGTH_SHORT).show(); startActivity(new Intent(LoginActivity.this,MainActivity.class)); MainActivity.account=account; }else{ Toast.makeText(LoginActivity.this, "登陆失败!", Toast.LENGTH_SHORT).show(); } } } }); }}
代码没什么可说的,又基础的人都懂的,下面是smack具体登陆的代码,即上边代码中ClientConServer类:
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(Constant.SERVER, 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); return true; } catch (XMPPException e) { e.printStackTrace(); } return false; }}
smack连接服务器就是这么简单,关键代码只有几行,甚至你可以不懂xmpp协议,几行代码就可以完成基于xmpp协议的消息,
登陆成功后,在openfire管理控制台中可以看到test账号在线。
转载请注明出处:http://blog.csdn.net/Vestigge