上节openfire服务器已经搭建完成,这节看看,怎么使用smack基于xmpp协议登录openfire服务器,

在服务器中创建好测试的账号



下面看android客户端的代码,关于界面布局就不多说了,可以参考QQandroid客户端的界面:

Android高仿QQ登录界面http://blog.csdn.net/vestigge/article/details/8124674

至于为什么要仿别人的东西,不是喜欢山寨,而是素材方便,总不能自己又编码,又当美工吧,时间都花在PS上面了,那样,元芳,你说是吧?


登录界面完成以后,下面是登陆的代码:

[java]view plaincopy

  1. publicclassLoginActivityextendsActivity{

  2. privateEditTextaccountEditText;

  3. privateEditTextpasswordEditText;

  4. privateCheckBoxremeberCheckBox;

  5. publicvoidonCreate(BundlesavedInstanceState){

  6. super.onCreate(savedInstanceState);

  7. requestWindowFeature(Window.FEATURE_NO_TITLE);

  8. setContentView(R.layout.activity_login);

  9. accountEditText=(EditText)findViewById(R.id.login_account);

  10. passwordEditText=(EditText)findViewById(R.id.login_password);

  11. remeberCheckBox=(CheckBox)findViewById(R.id.login_remember);

  12. findViewById(R.id.login_login).setOnClickListener(newOnClickListener(){

  13. publicvoidonClick(Viewv){

  14. Stringaccount=accountEditText.getText().toString();

  15. Stringpassword=passwordEditText.getText().toString();

  16. if(account.equals("")||password.equals("")){

  17. Toast.makeText(LoginActivity.this,"账号或密码不能为空!",Toast.LENGTH_SHORT).show();

  18. }else{

  19. ClientConServerccs=newClientConServer(LoginActivity.this);

  20. booleanb=ccs.login(account,password);

  21. //如果登录成功

  22. if(b){

  23. Toast.makeText(LoginActivity.this,"登陆成功!",Toast.LENGTH_SHORT).show();

  24. startActivity(newIntent(LoginActivity.this,MainActivity.class));

  25. MainActivity.account=account;

  26. }else{

  27. Toast.makeText(LoginActivity.this,"登陆失败!",Toast.LENGTH_SHORT).show();

  28. }

  29. }

  30. }

  31. });

  32. }

  33. }


代码没什么可说的,又基础的人都懂的,下面是smack具体登陆的代码,即上边代码中ClientConServer类:

[java]view plaincopy

  1. publicclassClientConServer{

  2. privatestaticintPORT=5222;

  3. privateContextcontext;

  4. publicClientConServer(Contextcontext){

  5. this.context=context;

  6. }

  7. publicbooleanlogin(Stringa,Stringp){

  8. ConnectionConfigurationconfig=newConnectionConfiguration(Constant.SERVER,PORT);

  9. /**是否启用安全验证*/

  10. config.setSASLAuthenticationEnabled(false);

  11. /**是否启用调试*/

  12. //config.setDebuggerEnabled(true);

  13. /**创建connection链接*/

  14. XMPPConnectionconnection=newXMPPConnection(config);

  15. try{

  16. /**建立连接*/

  17. connection.connect();

  18. /**登录*/

  19. connection.login(a,p);

  20. /**开启读写线程,并加入到管理类中*/

  21. //ClientSendThreadcst=newClientSendThread(connection);

  22. //cst.start();

  23. //ManageClientThread.addClientSendThread(a,cst);

  24. returntrue;

  25. }catch(XMPPExceptione){

  26. e.printStackTrace();

  27. }

  28. returnfalse;

  29. }

  30. }


smack连接服务器就是这么简单,关键代码只有几行,甚至你可以不懂xmpp协议,几行代码就可以完成基于xmpp协议的消息,

登陆成功后,在openfire管理控制台中可以看到test账号在线。


更多相关文章

  1. 从Android项目学习Kotlin(一)
  2. 如何获取Android源码
  3. Android之GridView简单说明
  4. 22个值得收藏的android开源代码-UI篇
  5. Android异步消息处理机制 全解析
  6. 在代码中实现android:tint效果
  7. android 中 application 的使用
  8. Android(安卓)高手进阶教程(十三)之----Android(安卓)数据库SQLi
  9. Android(安卓)Studio NDK开发在C代码中将Log输出到logcat上面

随机推荐

  1. 02-Vue_事件修饰符
  2. 01-Vue_常用指令
  3. LVS+KeepAlived+Nginx高可用实现方案
  4. LVS管理工具--ipvsadm
  5. 【Vue框架学习】过滤器、自定义指令、生
  6. Docker从入门到掉坑(三):容器太多,操作好麻
  7. MySQL高可用之mysql+keepalived
  8. Docker从入门到掉坑(二):基于Docker构建Sp
  9. 来探讨一下最近面试问的ThreadLocal问题
  10. Docker 从入门到掉坑