Android开发-------利用mob开发注册页面

**

Android开发-------利用mob开发注册页面

**

1.开发前准备

首先进入mob官网及进行账号注册,Mob官网,然后创建应用,获取App Key和App Secret,然后按照官网集成步骤进行集成,官网集成文档
**

2.布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent" android:gravity="center">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="注册"
        android:gravity="center"
        android:textSize="40dp"

        ></TextView>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="80dp"
        android:orientation="vertical"
        android:layout_weight="2"
        >
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="80dp"
            android:orientation="horizontal"
            >

            <EditText
                android:id="@+id/edtId"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:hint="请输入手机号"
                android:inputType="text"></EditText>
        </LinearLayout>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="80dp"
            android:orientation="vertical"
            android:layout_weight="3"
            >
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="80dp"
                android:orientation="horizontal"
                >

                <EditText
                    android:id="@+id/edtcode"
                    android:layout_width="200dp"
                    android:layout_height="match_parent"
                    android:hint="请输入验证码"
                    android:inputType="text"></EditText>
                <Button
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/btnCode"
                    android:text="获取验证码"
                    android:onClick="getCode"
                    ></Button>
            </LinearLayout>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="80dp"
                android:orientation="horizontal"
                >

                <EditText
                    android:id="@+id/inpws1"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:hint="请输入密码"
                    android:inputType="textPassword"></EditText>
            </LinearLayout>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="80dp"
                android:orientation="horizontal"
                >

                <EditText
                    android:id="@+id/inpws2"
                    android:layout_width="303dp"
                    android:layout_height="match_parent"
                    android:hint="请再次入密码"
                    android:inputType="textPassword">
                </EditText>
            </LinearLayout>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="20dp"
                android:gravity="center"
                android:id="@+id/mes"
                ></TextView>
            <Button
                android:id="@+id/btnsignup"
                android:layout_width="304dp"
                android:layout_height="wrap_content"
                android:text="注册"
                android:textSize="20dp"
                android:onClick="signUp"></Button>
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

**
**

3.页面代码

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK;

public class signup extends AppCompatActivity {

    Button btn1,btn2;
    EditText et1, et2,et3,et4;
    TextView mes ;
    boolean ispessame=false;  // 密码是否相同
    private String phoneNum;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.signup);
        SMSSDK.registerEventHandler(eh);
        btn1 = (Button)findViewById(R.id.btnCode);
        btn2 = (Button)findViewById(R.id.btnsignup);
        et1 = (EditText)findViewById(R.id.edtId);
        et2 = (EditText)findViewById(R.id.edtcode);
        et3 = (EditText)findViewById(R.id.inpws1);
        et4 = (EditText)findViewById(R.id.inpws2);
        mes = (TextView)findViewById(R.id.mes);
        et4.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {
                } else {
                    isnpwssame();
                }
            }
        });
    }
    //当第二次输入密码框失去焦点时,验证两次输入密码是否相同
    private void isnpwssame() {
        String pws1 = et3.getText().toString().trim();
        String pws2 = et4.getText().toString().trim();
        if(pws1.equals(pws2) || pws1.equals("") || pws1==null){
            ispessame = true;
            mes.setText("");
            btn2.setEnabled(true);
        }
        else {
            mes.setText("两次输入的密码不同");
            mes.setTextColor(Color.RED);
            ispessame = false;
            btn2.setEnabled(false);
        }
    }
    /**
     * 使用计时器来限定验证码
     * 在发送验证码的过程 不可以再次申请获取验证码 在指定时间之后没有获取到验证码才能重新进行发送
     * 这里限定的时间是60s
     */
    private CountDownTimer timer = new CountDownTimer(60000, 1000) {
        @Override
        public void onTick(long millisUntilFinished) {
            btn1.setEnabled(false);
            btn1.setText((millisUntilFinished / 1000) + "秒后可重发");
        }

        @Override
        public void onFinish() {
            btn1.setEnabled(true);
            btn1.setText("获取验证码");
        }
    };
    EventHandler eh = new EventHandler(){

        @Override
        public void afterEvent(int event, int result, Object data) {

            if (result == SMSSDK.RESULT_COMPLETE) {
                //回调完成
                if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
                    //提交验证码成功进行页面跳转
                    Intent intent = new Intent(signup.this, signin.class);
                    startActivityForResult(intent, 0);
                }else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE){
                    //获取验证码成功
                }else if (event ==SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES){
                    //返回支持发送验证码的国家列表
                }
            }else{
                mes.setText("验证码错误");
                mes.setTextColor(Color.RED);
                ((Throwable)data).printStackTrace();
            }
        }
    };
        /**
         * 此方法在发送验证短信前被调用,传入参数为接收者号码
         * 返回true表示此号码无须实际接收短信
         */
     public boolean onSendMessage(String country, String phone){
         Pattern p = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0-9]))\\d{8}$");
         Matcher m = p.matcher(phone);
         return m.matches();
     }

    public void getCode(View v){
        phoneNum = et1.getText().toString().trim();
        //发送短信,传入国家号和电话---使用SMSSDK核心类之前一定要在MyApplication中初始化,否侧不能使用
        if (TextUtils.isEmpty(phoneNum)) {
            Toast.makeText(this, "号码不能为空!", Toast.LENGTH_SHORT).show();
        } else {
            if(onSendMessage("+86",phoneNum)) {
                SMSSDK.getVerificationCode(null,"+86", phoneNum );
                timer.start();
                Toast.makeText(this, "发送成功:" + phoneNum, Toast.LENGTH_SHORT).show();
            }
            else{
                Toast.makeText(this, "手机号有误" , Toast.LENGTH_SHORT).show();
            }
        }

    }
    public void signUp(View v) {
        String security = et2.getText().toString();
        String pws1= et3.getText().toString();
        if(security.isEmpty()){
            Toast.makeText(this, "验证码不能为空", Toast.LENGTH_SHORT).show();
        }
        else if(pws1.isEmpty()){
            Toast.makeText(this, "密码不能为空", Toast.LENGTH_SHORT).show();
        }
        else{
            //提交短信验证码
            SMSSDK.submitVerificationCode("+86", phoneNum, security);//国家号,手机号码,验证码
        }
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        //要在activity销毁时反注册,否侧会造成内存泄漏问题
        SMSSDK.unregisterAllEventHandler();
    }
}

**

4.添加权限

需要在清单里添加权限

    <!-- 可选权限说明 -->
    <uses-permission android:name="android.permission.INTERNET" /> <!-- 允许应用程序联网(必须) -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 允许访问WiFi网络状态信息(必须) -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 允许读取手机状态(必须) -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 允许访问网络状态(必须) -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 允许写手机存储(必须) -->
    <uses-permission android:name="android.permission.RECEIVE_SMS" /> <!-- GUI自动填充验证码功能(非必须) -->
    <uses-permission android:name="android.permission.READ_SMS" /> <!-- 从短信中读取验证码接口(非必须) -->
    <uses-permission android:name="android.permission.READ_CONTACTS" />

**
**

5.页面效果

在这里插入图片描述
第一次写CSDN,欢迎各位指出错误.

猜你喜欢

转载自blog.csdn.net/weixin_43363832/article/details/109345636