**
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,欢迎各位指出错误.