大二下学期团队项目(用户登录注册实现)

只是实现了app端简单的用户登录于注册的实现,输入手机号,密码即可注册与登录,也无法发送手机验证码。注册将数据存入数据库,完成一次登录后会记住密码。

登录的activity

package com.example.cloudlibrary;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.view.ViewTreeObserver;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.example.cloudlibrary.Data.AllData;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.xutils.common.Callback;
import org.xutils.http.RequestParams;
import org.xutils.x;

import java.util.StringJoiner;

public class SigninActivity extends AppCompatActivity implements View.OnClickListener,
        View.OnFocusChangeListener, ViewTreeObserver.OnGlobalLayoutListener,
        TextWatcher {
//    private String TAG = "ifu25";
//
//    private ImageButton mIbNavigationBack;
//    private LinearLayout mLlLoginPull;
//    private View mLlLoginLayer;
//    private LinearLayout mLlLoginOptions;
//    private EditText mEtLoginUsername;
//    private EditText mEtLoginPwd;
//    private LinearLayout mLlLoginUsername;
//    private ImageView mIvLoginUsernameDel;
//    private Button login_submit;
//    private LinearLayout mLlLoginPwd;
//    private ImageView mIvLoginPwdDel;
//    private ImageView mIvLoginLogo;
//    private LinearLayout mLayBackBar;
//    private TextView mTvLoginForgetPwd;
//    private Button login_register;
//
//    //全局Toast
//    private Toast mToast;
//
//    private int mLogoHeight;
//    private int mLogoWidth;
    private EditText login_phone;
    private EditText login_pass;
    private Button login_register;
    private Button login_submit;
    private AllData allData=new AllData();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_signin);
        initView();
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(data!=null){
            Log.e("TAG",data.getStringExtra("user_password")+data.getStringExtra("user_phone"));
            login_pass.setText(data.getStringExtra("user_password"));
            login_phone.setText(data.getStringExtra("user_phone"));
            String user_name=data.getStringExtra("user_phone");
            SharedPreferences.Editor editor=getSharedPreferences("userdata",MODE_PRIVATE).edit();
            editor.clear();
            editor.putString("user_password",login_pass.getText().toString());
            editor.putString("user_phone",login_phone.getText().toString());
            editor.putString("user_name",user_name);
            editor.commit();
        }
    }
    private void initView() {
        login_register=(Button)findViewById(R.id.login_register);
        login_register.setOnClickListener(this);
        login_submit=(Button)findViewById(R.id.login_submit);
        login_submit.setOnClickListener(this);
        login_phone=(EditText)findViewById(R.id.login_phone);
        login_pass=(EditText)findViewById(R.id.login_pass);
        SharedPreferences sp=getSharedPreferences("userdata",MODE_PRIVATE);
        login_phone.setText(sp.getString("user_phone",""));
        login_pass.setText(sp.getString("user_password",""));
        String name=sp.getString("user_name","");
        Log.e("TAG",login_pass.getText().toString()+","+login_phone.getText().toString()+","+name);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.login_register:
                //注册
                startActivityForResult(new Intent(SigninActivity.this, RegisterActivity.class),1);
                break;
            case R.id.login_submit:
                //登录
                RequestParams params = new RequestParams("http://"+ allData.getUrl() +":5000/android_query_user");
                //params.setMultipart(true);
                String phone=login_phone.getText().toString();
                params.addBodyParameter("phone", phone);
                //params.addBodyParameter("File",new File(Environment.getExternalStorageDirectory()+"/test_download/YLY.jpg"),null,"YLY.jpg");
                x.http().get(params, new Callback.CacheCallback<String>() {

                    @Override
                    public boolean onCache(String result) {
                        return false;
                    }

                    @Override
                    public void onSuccess(String result) {
                        try {
                            JSONObject object= null;
                            object = new JSONObject(result);
                            JSONArray array=object.optJSONArray("data");
                            if(login_pass.getText().toString().equals(array.getString(1)))
                            {
                                SharedPreferences.Editor editor=getSharedPreferences("userdata",MODE_PRIVATE).edit();
                                editor.clear();
                                editor.putString("user_password",login_pass.getText().toString());
                                editor.putString("user_phone",login_phone.getText().toString());
                                editor.putString("user_name",array.getString(3));
                                editor.commit();
                                Toast.makeText(SigninActivity.this,"登录成功",Toast.LENGTH_LONG).show();
                                startActivity(new Intent(SigninActivity.this, MainActivity.class));
                            }else{
                                Toast.makeText(SigninActivity.this,"密码或手机号错误",Toast.LENGTH_LONG).show();
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }

                    @Override
                    public void onError(Throwable ex, boolean isOnCallback) {
                        Log.e("TAG", "onError==" + ex.toString());
                    }

                    @Override
                    public void onCancelled(CancelledException cex) {
                        Log.e("TAG", "onCancelled==" + cex.toString());
                    }

                    @Override
                    public void onFinished() {
                        Log.e("TAG", "onFinished");
                    }
                });
                break;
        }

    }

    @Override
    public void onFocusChange(View v, boolean hasFocus) {

    }

    @Override
    public void onGlobalLayout() {

    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {

    }

    @Override
    public void afterTextChanged(Editable s) {

    }
}

注册的activity

package com.example.cloudlibrary;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.example.cloudlibrary.Adapter.CloudPagerAdapter;
import com.example.cloudlibrary.Data.AllData;
import com.example.cloudlibrary.Data.ListData;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.xutils.common.Callback;
import org.xutils.http.RequestParams;
import org.xutils.x;

import java.util.ArrayList;
import java.util.List;

public class RegisterActivity extends AppCompatActivity implements View.OnClickListener{
    private static final String TAG = "MainActivity";
    private EditText register_username;
    private EditText register_userpass;
    private EditText register_userpass2;
    private EditText register_userphone;
    private EditText register_code;
    private TextView register_getcode;
    private Button register_submit;
    private int type = 1;
    private AllData allData=new AllData();
    private CountDownTimer mCountDownTimer = new CountDownTimer(60000, 1000) {
        @Override
        public void onTick(long l) {
            register_getcode.setText((l / 1000 )+ "秒后可重发");
        }

        @Override
        public void onFinish() {
            register_getcode.setEnabled(true);
            register_getcode.setText("获取验证码");
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
        register_username = (EditText) findViewById(R.id.register_username);
        register_userpass = (EditText) findViewById(R.id.register_userpass);
        register_userpass2 = (EditText) findViewById(R.id.register_userpass2);
        register_userphone= (EditText) findViewById(R.id.register_userphone);
//        register_code = (EditText) findViewById(R.id.register_code);
//        register_getcode = (TextView)findViewById(R.id.register_getcode);
        register_submit = (Button) findViewById(R.id.register_submit);
//        register_getcode.setOnClickListener(this);
        register_submit.setOnClickListener(this);
    }
    @Override
    public void onClick(View v) {
        int flag=1;
        String phone = register_userphone.getText().toString().trim();
//        String code =register_code.getText().toString().trim();
        String password = register_userpass.getText().toString().trim();
        String repassword = register_userpass2.getText().toString().trim();
        String name = register_username.getText().toString().trim();
        judgePhoneNums(phone,flag);
        if(password.isEmpty()){
            Toast.makeText(this, "密码不能为空",Toast.LENGTH_SHORT).show();
            flag=0;
        }
        if(name.isEmpty()){
            Toast.makeText(this, "用户昵称不能为空",Toast.LENGTH_SHORT).show();
            flag=0;
        }
        if(!password.equals(repassword)){
            Toast.makeText(this, "两次密码不一样",Toast.LENGTH_SHORT).show();
            flag=0;
        }
        if(flag==1){
            RequestParams params = new RequestParams("http://"+ allData.getUrl() +":5000/android_register");
            //params.setMultipart(true);
            params.addBodyParameter("name", name);
            params.addBodyParameter("phone", phone);
            params.addBodyParameter("password", password);
            //params.addBodyParameter("File",new File(Environment.getExternalStorageDirectory()+"/test_download/YLY.jpg"),null,"YLY.jpg");
            x.http().get(params, new Callback.CacheCallback<String>() {

                @Override
                public boolean onCache(String result) {
                    return false;
                }

                @Override
                public void onSuccess(String result) {
                    try {
                        JSONObject object= null;
                        object = new JSONObject(result);
                        int Flag=object.optInt("data");
                        if(Flag==1){
                            Toast.makeText(RegisterActivity.this,"注册成功",Toast.LENGTH_LONG).show();
                            Intent intent=new Intent();
                            intent.putExtra("user_password",password);
                            intent.putExtra("user_phone",phone);
                            intent.putExtra("user_name",name);
                            setResult(1,intent);
                            finish();
                        }else{
                            Toast.makeText(RegisterActivity.this,"注册失败",Toast.LENGTH_LONG).show();
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }

                @Override
                public void onError(Throwable ex, boolean isOnCallback) {
                    Log.e("TAG", "onError==" + ex.toString());
                }

                @Override
                public void onCancelled(CancelledException cex) {
                    Log.e("TAG", "onCancelled==" + cex.toString());
                }

                @Override
                public void onFinished() {
                    Log.e("TAG", "onFinished");
                }
            });
        }
//        switch (v.getId()) {
//            case R.id.register_getcode:
//                register_getcode.requestFocus();
//                if (!judgePhoneNums(phone)) {
//                    return;
//                } else {
//                    mCountDownTimer.start();
//                    //这里的服务器接口是无效的需要换成你自己获取验证码的接口地址
//                    RequestParams params = new RequestParams("https://www.baidu.com/?tn=40020637_6_oem_dg");
//                    String str = String.valueOf(type);
//                    //需要携带的参数
//                    params.addBodyParameter("phone", phone);
//                    params.addBodyParameter("type", str);
//                    x.http().get(params, new Callback.CacheCallback<String>() {
//                        @Override
//                        public void onSuccess(String result) {
//                            Log.e(TAG, result.toString());
//                            register_code.setText(result.toString());
//                        }
//
//                        @Override
//                        public void onError(Throwable ex, boolean isOnCallback) {
//
//                        }
//
//                        @Override
//                        public void onCancelled(CancelledException cex) {
//
//                        }
//
//                        @Override
//                        public void onFinished() {
//
//                        }
//
//                        @Override
//                        public boolean onCache(String result) {
//                            return false;
//                        }
//                    });
//                }
//                break;
//            case R.id.register_submit:
//                if (!judgePhoneNums(phone)) {
//                    return;
//                } else if(TextUtils.isEmpty(code)) {
//                    Toast.makeText(this, "验证码不能为空", Toast.LENGTH_SHORT).show();
//                } else if(password.length() < 6 ) {
//                    Toast.makeText(this, "请输入长度大于6位的密码", Toast.LENGTH_SHORT).show();
//                } else if(!TextUtils.equals(password,repassword)) {
//                    Toast.makeText(this, "两次输入的密码不一致", Toast.LENGTH_SHORT).show();
//                } else if(register_submit == v) {
//                    //这里的服务器接口是无效的需要换成你自己的注册接口地址
//                    RequestParams params = new RequestParams("http://api.php/Public/smsRegister");
//                    //需要带入的参数
//                    params.addBodyParameter("phone", phone);
//                    params.addBodyParameter("captcha", code);
//                    params.addBodyParameter("password", password);
//                    params.addBodyParameter("repassword", repassword);
//                    x.http().post(params, new Callback.CacheCallback<String>() {
//                        @Override
//                        public void onSuccess(String result) {
//                            Log.e(TAG, result.toString());
//                        }
//
//                        @Override
//                        public void onError(Throwable ex, boolean isOnCallback) {
//
//                        }
//
//                        @Override
//                        public void onCancelled(CancelledException cex) {
//
//                        }
//
//                        @Override
//                        public void onFinished() {
//
//                        }
//
//                        @Override
//                        public boolean onCache(String result) {
//                            return false;
//                        }
//                    });
//                    break;
//                }
//        }
    }
    private boolean judgePhoneNums(String phoneNums,int flag) {
        if (isMatchLength(phoneNums, 11) && isMobileNO(phoneNums)) {
            return true;
        }
        Toast.makeText(this, "请输入正确的手机号",Toast.LENGTH_SHORT).show();
        flag=0;
        return false;
    }

    /**
     * 判断一个字符串的位数
     * @param str
     * @param length
     * @return
     */
    public static boolean isMatchLength(String str, int length) {
        if (str.isEmpty()) {
            return false;
        } else {
            return str.length() == length ? true : false;
        }
    }

    /**
     * 验证手机格式
     */
    public static boolean isMobileNO(String mobileNums) {
        String strTel = "[1][358]\d{9}";
        if (TextUtils.isEmpty(mobileNums))
            return false;
        else
            return mobileNums.matches(strTel);
    }
}
原文地址:https://www.cnblogs.com/fengchuiguobanxia/p/14791728.html