Android客户端基于XMPP的IM(openfire+asmack)的聊天工具之登录(三)
2014-10-30 12:45
330 查看
/IM/src/com/example/imui/LoginActivity.java
/IM/res/layout/activity_main.xml
/IM/src/com/example/imui/FridentsActivity.java
/IM/res/layout/fridents_list.xml
AndroidManifest.xml
以上(一)(二)(三)可以实现简单登录注册,由于我是用的openfire自带数据库,所以我没找到设置昵称的字段
测试结果:
点击注册
返回到登陆界面输入账号密码点击登录
测试一下重号注册
服务端
package com.example.imui; import org.jivesoftware.smack.XMPPException; import org.jivesoftware.smack.packet.Presence; import com.example.imui.R; import com.example.service.XxmpConnection; import com.lidroid.xutils.ViewUtils; import com.lidroid.xutils.view.annotation.ViewInject; import android.os.Bundle; import android.os.Handler; import android.app.Activity; import android.content.Intent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.RadioButton; import android.widget.TextView; import android.widget.Toast; public class LoginActivity extends Activity implements OnClickListener { @ViewInject(R.id.acount) private EditText acountEditText; @ViewInject(R.id.password) private EditText passwordEditText; @ViewInject(R.id.checkBox) private CheckBox mCheckBox; @ViewInject(R.id.regester) private TextView regestTextView; @ViewInject(R.id.login) private Button loginButton; private LinearLayout layout1, layout2; Handler handler = new Handler() { public void handleMessage(android.os.Message msg) { if(msg.what==1) { System.out.println("++++++++++++++++++++++++"); layout1.setVisibility(View.VISIBLE); layout2.setVisibility(View.GONE); } else if(msg.what==2) { layout1.setVisibility(View.GONE); layout2.setVisibility(View.VISIBLE); Toast.makeText(LoginActivity.this, "登录失败!",Toast.LENGTH_SHORT).show(); }else if(msg.what==3){ Toast.makeText(LoginActivity.this, "登录成功", 0).show(); } }; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); acountEditText=(EditText)findViewById(R.id.acount); passwordEditText=(EditText)findViewById(R.id.password); mCheckBox=(CheckBox)findViewById(R.id.checkBox); regestTextView=(TextView)findViewById(R.id.regester); regestTextView.setOnClickListener(this); loginButton=(Button)findViewById(R.id.login); loginButton.setOnClickListener(this); // 正在登录 this.layout1 = (LinearLayout) findViewById(R.id.layout_logining); // 登录界面 this.layout2 = (LinearLayout) findViewById(R.id.layout_login); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.login: final String acount = acountEditText.getText().toString().trim(); final String password = passwordEditText.getText().toString().trim(); new Thread(new Runnable() { @Override public void run() { handler.sendEmptyMessage(1); try { XxmpConnection.getConnection().login(acount, password); // 状态 Presence presence = new Presence(Presence.Type.available); XxmpConnection.getConnection().sendPacket(presence); handler.sendEmptyMessage(3); Intent intent = new Intent(LoginActivity.this, FridentsActivity.class); startActivity(intent); finish(); } catch (XMPPException e) { // TODO Auto-generated catch block e.printStackTrace(); handler.sendEmptyMessage(2); } } }).start(); break; case R.id.regester: Intent intent=new Intent(LoginActivity.this, RegesterActivity.class); startActivity(intent); break; } } }
/IM/res/layout/activity_main.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:id="@+id/layout_logining" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#FFEFEFEF" android:gravity="center" android:orientation="vertical" android:visibility="gone" > <ProgressBar android:id="@+id/formlogin_pb" style="@android:style/Widget.ProgressBar.Inverse" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/formlogin_tv_login" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10.0dip" android:text="正在登錄" android:textColor="#FF000000" /> </LinearLayout> <LinearLayout android:id="@+id/layout_login" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="100dp" android:src="@drawable/a1" /> <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/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="20dp" 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/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="20dp" android:orientation="horizontal" > <CheckBox android:id="@+id/checkBox" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/rememberpassword" android:textSize="@dimen/textsize8" /> <TextView android:id="@+id/regester" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="40dp" android:text="@string/regester" android:textSize="@dimen/textsize8" /> </LinearLayout> <Button android:id="@+id/login" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="20dp" android:text="@string/login" android:textSize="@dimen/textsize11" /> </LinearLayout> </FrameLayout>
/IM/src/com/example/imui/FridentsActivity.java
import com.example.imui.R; import android.app.Activity; import android.os.Bundle; public class FridentsActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.fridents_list); } }
/IM/res/layout/fridents_list.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" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="好友界面" android:textSize="@dimen/textsize14"/> </LinearLayout>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.imui" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.imui.LoginActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="FridentsActivity"></activity> <activity android:name="RegesterActivity"></activity> </application> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> </manifest>
以上(一)(二)(三)可以实现简单登录注册,由于我是用的openfire自带数据库,所以我没找到设置昵称的字段
测试结果:
点击注册
返回到登陆界面输入账号密码点击登录
测试一下重号注册
服务端
相关文章推荐
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- Android客户端基于XMPP的IM(openfire+asmack)的聊天工具之环境搭建及与服务器建立连接(一)
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- Android基于XMPP Smack Openfire开发IM(2)登录openfire
- Android基于XMPP Smack Openfire开发IM【三】客户端接收服务器发送的消息
- Android基于XMPP Smack Openfire开发IM【三】客户端接收服务器发送的消息
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- XMPP(二)-基于asmack+openfire的安卓客户端(仿QQ)的介绍以及个人心得
- Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- Android基于XMPP Smack Openfire开发IM(2)登录openfire
- XMPP(二)-基于asmack+openfire的安卓客户端(仿QQ)的介绍以及个人心得
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等