**
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,歡迎各位指出錯誤.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/196397.html
標籤:python
上一篇:fragment的退堆疊的實作
下一篇:基于Airtest抖音養號源代碼
