Android客户端基于XMPP的IM(openfire+asmack)的聊天工具之注册(二)

/IM/src/com/example/imui/RegesterActivity.java

package com.example.imui;

import org.jivesoftware.smack.PacketCollector;
import org.jivesoftware.smack.SmackConfiguration;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.filter.AndFilter;
import org.jivesoftware.smack.filter.PacketFilter;
import org.jivesoftware.smack.filter.PacketIDFilter;
import org.jivesoftware.smack.filter.PacketTypeFilter;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.Registration;

import com.example.service.XxmpConnection;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class RegesterActivity extends Activity implements OnClickListener {

 private EditText account;
 private EditText password;
 private EditText nickname;
 private Button regester;

 private XMPPConnection connection;

 Handler handler = new Handler() {
  public void handleMessage(android.os.Message msg) {
   switch (msg.what) {
   case 0:
    Toast.makeText(RegesterActivity.this, "连接服务器失败", 0).show();
    break;
   case 1:
    Toast.makeText(RegesterActivity.this, "注册成功", 0).show();
    break;
   case 2:
    Toast.makeText(RegesterActivity.this, "已有账号", 0).show();
    break;
   case 3:
    Toast.makeText(RegesterActivity.this, "注册失败", 0).show();
    break;
   default:
    break;
   }
  };
 };

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  setContentView(R.layout.regester);

  account = (EditText) findViewById(R.id.reg_acount);
  password = (EditText) findViewById(R.id.reg_password);
  nickname = (EditText) findViewById(R.id.reg_nickname);
  regester = (Button) findViewById(R.id.bt_regester);
  regester.setOnClickListener(this);
 }

 @Override
 public void onClick(View v) {
  final String accountStr = account.getText().toString().trim();
  final String passwordStr = password.getText().toString().trim();

  new Thread(new Runnable() {
   @Override
   public void run() {
    connection = XxmpConnection.getConnection();
    regester(accountStr, passwordStr);
   }
  }).start();

 }

 private void regester(String accountStr, String passwordStr) {
  if (connection == null) {
   handler.sendEmptyMessage(0);
  }
  Registration registration = new Registration();
  registration.setType(IQ.Type.SET);
  registration.setTo(connection.getServiceName());
  Log.d("kkk", connection.getServiceName());
  registration.setUsername(accountStr);
  registration.setPassword(passwordStr);
  registration.addAttribute("android", "geolo_createUser_android");
  PacketFilter filter = new AndFilter(new PacketIDFilter(
    registration.getPacketID()), new PacketTypeFilter(IQ.class));
  PacketCollector collector = connection.createPacketCollector(filter);
  connection.sendPacket(registration);
  IQ resultIQ = (IQ) collector.nextResult(SmackConfiguration
    .getPacketReplyTimeout());
  collector.cancel();// 停止请求results(是否成功的结果)
  if (resultIQ == null) {
   Log.e("RegistActivity", "No response from server.");
   handler.sendEmptyMessage(0);
  } else if (resultIQ.getType() == IQ.Type.RESULT) {
   handler.sendEmptyMessage(1);
   finish();
  } else {
   if (resultIQ.getError().toString()
     .equalsIgnoreCase("conflict(409)")) {
    Log.e("RegistActivity", "IQ.Type.ERROR: "
      + resultIQ.getError().toString());
    handler.sendEmptyMessage(2);
   } else {
    Log.e("RegistActivity", "IQ.Type.ERROR: "
      + resultIQ.getError().toString());
    handler.sendEmptyMessage(3);
   }
  }
 }

}


 

 

/IM/res/layout/regester.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_gravity="center_horizontal" >
    
    <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="用户注册"
        android:layout_marginTop="20dp"
        android:textSize="@dimen/textsize11"
        android:layout_gravity="center_horizontal"/>
    
    <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="30dp"
            android:orientation="horizontal" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/acount"
                android:textSize="@dimen/textsize11" />

            <EditText
                android:id="@+id/reg_acount"
                android:layout_width="@dimen/wigth"
                android:layout_height="wrap_content"
                android:background="@drawable/bg_text"
                android:hint="@string/hint1"
                android:inputType="number"
                android:padding="2dp"
                android:textSize="@dimen/textsize9" />
        </LinearLayout>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="30dp"
            android:orientation="horizontal" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/password"
                android:textSize="@dimen/textsize11" />

            <EditText
                android:id="@+id/reg_password"
                android:layout_width="@dimen/wigth"
                android:layout_height="wrap_content"
                android:background="@drawable/bg_text"
                android:hint="@string/hint2"
                android:inputType="textPassword"
                android:padding="2dp"
                android:textSize="@dimen/textsize9" />
        </LinearLayout>
        
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="30dp"
            android:orientation="horizontal" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="昵称 : "
                android:textSize="@dimen/textsize11" />

            <EditText
                android:id="@+id/reg_nickname"
                android:layout_width="@dimen/wigth"
                android:layout_height="wrap_content"
                android:background="@drawable/bg_text"              
                android:padding="2dp"
                android:textSize="@dimen/textsize9" />
        </LinearLayout>
        
        <Button 
            android:layout_width="@dimen/wigth"
            android:layout_height="wrap_content"
            android:id="@+id/bt_regester"
            android:layout_marginTop="20dp"
            android:background="@drawable/button_circle"
            android:text="注册"
            android:layout_gravity="center_horizontal"
            android:textSize="@dimen/textsize9"/>

</LinearLayout>


 


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值