即时聊天APP(三) - 注册和登陆

注册和登陆大多都是一些用户名和密码的验证,所以放在一起写,注册代码:

String account = accountEdit.getText().toString().trim();
String password = passwordEdit.getText().toString().trim();
String yanzheng = yanzhengma.getText().toString().trim();
if(account.equals("")||password.equals("")||yanzheng.equals("")) {
                if (account.equals(""))
                    Toast.makeText(this, "请填写用户名!", Toast.LENGTH_SHORT).show();
                else if(password.equals(""))
                    Toast.makeText(this, "请填写用户密码!", Toast.LENGTH_SHORT).show();
                else if(yanzheng.equals(""))
                    Toast.makeText(this, "请点击获取验证码!", Toast.LENGTH_SHORT).show();
            } else if(a != Integer.valueOf(yanzheng)){
                Toast.makeText(this, "验证码输入错误!", Toast.LENGTH_SHORT).show();
            } else if (account.length() > 6 || account.length() < 2) {
                Toast.makeText(this, "请输入2-6位用户名!", Toast.LENGTH_SHORT).show();
                accountEdit.setText("");
            } else if (password.length() > 8 || password.length() < 4) {
                Toast.makeText(this, "请输入4-8位密码!", Toast.LENGTH_SHORT).show();
                passwordEdit.setText("");
            } else {
                //存储
                BmobUser us = new BmobUser();
                us.setUsername(account);
                us.setPassword(password);
                //检查网络连接
                if(!NetWork.isNetConnection(this)){
                    Toast.makeText(this,"无网络连接!",Toast.LENGTH_SHORT).show();
                    return;
                }else{
                    us.signUp(new SaveListener() {
                        @Override
                        public void done(BmobUser re, BmobException e) {
                            if(e==null){
                                Toast.makeText(Register.this, "注册成功!", Toast.LENGTH_SHORT).show();
                            }else{
                                Toast.makeText(Register.this, "用户名已存在,请直接登录!", Toast.LENGTH_SHORT).show();
                            }
                        }
                    });
                    //跳转到登录界面
                    Intent intent2 = new Intent(Register.this,login.class);
                    intent2.putExtra("account", account);
                    intent2.putExtra("password", password);
                    startActivity(intent2);
                    finish();
                }
            }  

对于用户名和密码的一些判断,使用signUp来进行用户注册,注册成功后会利用intent传递用户参数给登录界面。

下面是登陆界面的初始化代码,本文使用LitePal进行本地数据库存储用户信息,并将用户的用户名和密码使用SharedPreferences文件存储,这里可以使用MD5进行加密,但我没写:

//数据库初始化
    LitePal.initialize(this);
    LitePal.getDatabase();
    // 注册订阅者
    EventBus.getDefault().register(this);
    //初始化bmob
    Bmob.initialize(this, "d4dafd6854343ba7b42a4c347757c7e6");
    BmobIM.init(this);
    BmobIM.registerDefaultMessageHandler(new ImMessageHandler());
    //TODO 集成:1.4、初始化数据服务SDK、初始化设备信息并启动推送服务
    // 使用推送服务时的初始化操作
    BmobInstallationManager.getInstance().initialize(new InstallationListener() {
        @Override
        public void done(BmobInstallation bmobInstallation, BmobException e) {}});
    // 启动推送服务
    BmobPush.startWork(this);  

接下来判断复选框(是否记住密码)以及是否有参数传递过来:

//判断是否选中
if(isRemember){
String account = pref.getString("account","");
String password = pref.getString("password","");
accountEdit.setText(account);
passwordEdit.setText(password);
rememberPass.setChecked(true);
}
try {
Intent intent0 = getIntent();
String acc = intent0.getStringExtra("account");
String pass = intent0.getStringExtra("password");
//判断是否记住
if(isRemember) {
    String acc1 = accountEdit.getText().toString().trim();
    String pass1 = passwordEdit.getText().toString().trim();
    editor = pref.edit();
    if(rememberPass.isChecked()){
        editor.putBoolean("remember",true);
        editor.putString("account",acc1);
        editor.putString("password",pass1);
    } else {
        editor.clear();
    }
    editor.apply();
}
//判断传递值是否为空
if(!(acc.equals("")&&pass.equals(""))){
    accountEdit.setText(acc);
    passwordEdit.setText(pass);
}
}catch (Exception e) {
Log.i(TAG, "onCreate: "+e);
}  

当用户点击登陆按钮,调用login方法判断用户是否存在于服务器中:

//检查网络连接
if(!NetWork.isNetConnection(this)){
Toast.makeText(this,"无网络连接!",Toast.LENGTH_SHORT).show();
return;
}else{
// 登录验证
us.login(new SaveListener() {
    @Override
    public void done(BmobUser bmobUser, BmobException e) {
        if(e==null){
            Intent intent1 = new Intent(login.this,MainActivity.class);
            startActivity(intent1);
            finish();
        }else{
            Toast.makeText(login.this,"用户名或密码错误,请重新登陆!",Toast.LENGTH_SHORT).show();
        }
    }
});
}  

用户登录成功之后就会跳转到MainActivity了。

posted @ 2019-01-28 21:39  干翻苍穹  阅读(683)  评论(0编辑  收藏  举报