我用的android是4.1.2的,Openfrre的配置见:http://blog.csdn.net/chexitianxia/article/details/9371169
界面编写见:http://blog.csdn.net/vestigge/article/details/8124674
首先在openfire上建立一个测试账号,因为是先写好的,没有注消部分,所以现在截图是显示在线的
LoginActivity.java
public class LoginActivity extends Activity{
private EditText accountEditText;
private EditText passwordEditText;
private CheckBox remeberCheckBox;
private Button login;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_login);
accountEditText=(EditText) findViewById(R.id.et_account);
passwordEditText=(EditText) findViewById(R.id.et_password);
remeberCheckBox=(CheckBox) findViewById(R.id.login_remember);
login = (Button) this.findViewById(R.id.btn_login);
login.setOnClickListener(new View.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{
new MyTask().execute(account,password);
}
}
});
}
public class MyTask extends AsyncTask<String, Void,String> {
//表示任务执行之前的操作
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
System.out.println("进到onPreExecute");
}
//主要是完成耗时操作
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
System.out.println("进到doInBackground");
ClientConServer ccs=new ClientConServer(LoginActivity.this);
boolean b=ccs.login(params[0],params[1]);
String resut = String.valueOf(b);
System.out.println("resut="+resut);
return resut;
}
//主要是更新UI操作
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
System.out.println("进到onPostExecute");
if(result.equals("true")){
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();
}
}
}
}
ClientConServer.java
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.1.103", 5222);
/** 是否启用安全验证 */
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;
}
}
注意:客户端需要加入一个org.jivesoftware.smack-3.1.0.jar 包才中。