smack for android 之登入openfire

來源:互聯網
上載者:User

標籤:

前言

smack 是開發openfire用戶端的類庫,從smack4.1 開始支援android開發,之前的版本是不支援的android的 ,

在這之前都是使用asmack 類庫,但是現在asmack 已經過時了。


至於openfire的搭建這裡就不介紹了,可以看看下面這篇內容

 http://blog.csdn.net/hu285279904/article/details/45103163 

寫的很亂,大家就湊合著看吧


我使用的安卓開發環境是 Android Studio 1.3 其實這都無所謂,

你使用eclipse adt 也都一樣


本文

首先 從openfire 官網下載smack庫  我這裡是使用smack 4.1.3版本

:http://www.igniterealtime.org/downloads/index.jsp


壓縮包裡有很多的類庫 ,但是我們只需其中的一些類庫, 不是所有的,多說一句壓縮包裡有api文檔

我們這裡只需要如下的類庫:

1.jxmpp-core-0.4.1.jar2.jxmpp-util-cache-0.4.1.jar3.smack-android-4.1.3.jar4.smack-android-extensions-4.1.3.jar5.smack-core-4.1.3.jar6.smack-extensions-4.1.3.jar7.smack-im-4.1.3.jar8.smack-sasl-provided-4.1.3.jar9.smack-tcp-4.1.3.jar

類庫列舉完了,只需這些類庫 既可

接下來看 核心代碼了

package com.example.administrator.im;/** * Created by Administrator on 2015/8/7. */import org.jivesoftware.smack.tcp.XMPPTCPConnection;import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;public class LoginXmpp {    //xmpp 伺服器位址    private static String host = "192.168.0.71";    //xmpp 伺服器連接埠    private static int prot = 5222;    //xmpp 伺服器名稱 可能是電腦名稱字    private static String serviceName = "win-1pjai6ne4bf";    public static boolean login(String username, String password) {        XMPPTCPConnectionConfiguration.Builder configBuilder = XMPPTCPConnectionConfiguration.builder();        //伺服器IP地址        configBuilder.setHost(host);        //伺服器連接埠        configBuilder.setPort(prot);        //伺服器名稱        configBuilder.setServiceName(serviceName);        //是否開啟安全模式        configBuilder.setSecurityMode(XMPPTCPConnectionConfiguration.SecurityMode.disabled);        //是否開啟壓縮        //configBuilder.setCompressionEnabled(false);        //開啟偵錯模式        configBuilder.setDebuggerEnabled(true);        //使用者名稱密碼        configBuilder.setUsernameAndPassword(username, password);        XMPPTCPConnection connection = new XMPPTCPConnection(configBuilder.build());        try {            connection.connect();            connection.login();            return  true;        }        catch (Exception e) {            e.printStackTrace();            return  false;        }    }}

調用核心代碼 進行登入

package com.example.administrator.im;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.EditText;import android.widget.Button;import android.view.View;import android.view.View.OnClickListener;import android.widget.Toast;import android.os.AsyncTask;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        init();    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.menu_main, menu);        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        // Handle action bar item clicks here. The action bar will        // automatically handle clicks on the Home/Up button, so long        // as you specify a parent activity in AndroidManifest.xml.        int id = item.getItemId();        //noinspection SimplifiableIfStatement        if (id == R.id.action_settings) {            return true;        }        return super.onOptionsItemSelected(item);    }    /*        初始化UI     */    private void init() {        final EditText usernameEdt = (EditText) findViewById(R.id.username);        final EditText passwordEdt = (EditText) findViewById(R.id.password);        final Button loginBtn = (Button) findViewById(R.id.loginBtn);        loginBtn.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                String username = usernameEdt.getText().toString();                String password = passwordEdt.getText().toString();                if (username.equals("") || password.equals("")) {                    Toast.makeText(MainActivity.this, "使用者名稱或密碼不可為空", Toast.LENGTH_SHORT).show();                    return;                }                new LoginAsyncTask().execute(username, password);            }        });    }    /*        登入的非同步類     */    class LoginAsyncTask extends AsyncTask<String, Integer, Boolean> {        @Override        protected Boolean doInBackground(String... parm) {            Boolean result = false;            result = LoginXmpp.login(parm[0],parm[1]);            return result;        }        @Override        protected void onPostExecute(Boolean result) {            if (!result) {                Toast.makeText(MainActivity.this, "使用者名稱或密碼錯誤", Toast.LENGTH_SHORT).show();            }            else {                Toast.makeText(MainActivity.this, "登入成功", Toast.LENGTH_SHORT).show();            }        }    }}









著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

smack for android 之登入openfire

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.