这是回调的代码,加载手机验证码,图片等来实现登录。
package com.example.shazidouhuiapp.activity; 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 androidx.appcompat.app.AppCompatActivity; import com.example.shazidouhuiapp.Bean.User; import com.example.shazidouhuiapp.R; import com.example.shazidouhuiapp.Util.Utils; import org.json.JSONException; import org.json.JSONObject; import cn.bmob.v3.BmobUser; import cn.bmob.v3.exception.BmobException; import cn.bmob.v3.listener.SaveListener; import cn.smssdk.EventHandler; import cn.smssdk.SMSSDK; public class mobloging extends AppCompatActivity { private Button buttonCode,buttonLogin; private EditText editTextPhoneNum,editTextCode,editPassword; private TextView fogetPassword,Register; private String phoneNum,code,pass; private EventHandler eh; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); initview(); 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) { //提交验证码成功 runOnUiThread(new Runnable() { @Override public void run() { pass=editPassword.getText().toString().trim();; phoneNum=editTextPhoneNum.getText().toString().trim(); BmobUser user=new BmobUser(); user.setPassword(pass); user.setUsername(phoneNum); user.login(new SaveListener<User>() { @Override public void done(User user, BmobException e) { if(e==null){ Toast.makeText(mobloging.this, "登陆成功", Toast.LENGTH_SHORT).show(); if(user.getType().equals("student")){ startActivity(new Intent(mobloging.this,studentinterface.class)); } else if(user.getType().equals("teacher")){ startActivity(new Intent(mobloging.this,teacherinterface.class)); } } else { Toast.makeText(mobloging.this, "登陆失败"+e.getMessage(), Toast.LENGTH_LONG).show(); } } }); } }); }else if (event == SMSSDK.EVENT_GET_VOICE_VERIFICATION_CODE){ runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(mobloging.this,"语音验证发送",Toast.LENGTH_SHORT).show(); } }); } else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE){ //获取验证码成功 runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(mobloging.this,"验证码已发送",Toast.LENGTH_SHORT).show(); } }); }else if (event == SMSSDK.EVENT_GET_SUPPORTED_COUNTRIES){ Log.i("test","test"); } }else{ ((Throwable)data).printStackTrace(); Throwable throwable = (Throwable) data; throwable.printStackTrace(); Log.i("1234",throwable.toString()); try { JSONObject obj = new JSONObject(throwable.getMessage()); final String des = obj.optString("detail"); if (!TextUtils.isEmpty(des)){ runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(mobloging.this,des,Toast.LENGTH_SHORT).show(); } }); } } catch (JSONException e) { e.printStackTrace(); } } } }; // fogetPassword.setOnClickListener(new View.OnClickListener() { // @Override // public void onClick(View v) { // startActivity(new Intent(mobloging.this,resetPassword.class)); // } // }); Register.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(mobloging.this,register.class)); } }); //注册一个事件回调监听,用于处理SMSSDK接口请求的结果 SMSSDK.registerEventHandler(eh); buttonCode.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { phoneNum = editTextPhoneNum.getText().toString(); if(!phoneNum.isEmpty()){ if(Utils.checkTel(phoneNum)){ //利用正则表达式获取检验手机号 // 获取验证码 SMSSDK.getVerificationCode("86", phoneNum); }else{ Toast.makeText(getApplicationContext(),"请输入有效的手机号",Toast.LENGTH_LONG).show(); } }else { Toast.makeText(getApplicationContext(),"请输入手机号",Toast.LENGTH_LONG).show(); return; } phoneNum = editTextPhoneNum.getText().toString(); } }); buttonLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { code = editTextCode.getText().toString(); if(!code.isEmpty()){ //提交验证码 SMSSDK.submitVerificationCode("86", phoneNum, code); }else{ Toast.makeText(getApplicationContext(),"请输入验证码",Toast.LENGTH_LONG).show(); return; } } }); } private void initview() { // private Button buttonCode,buttonLogin; // private EditText editTextPhoneNum,editTextCode,editPassword; buttonCode=findViewById(R.id.verify_getVerify); buttonLogin=findViewById(R.id.loginButton); editPassword=findViewById(R.id.password); editTextCode=findViewById(R.id.verify_verifyCode); editTextPhoneNum=findViewById(R.id.phoneNumber); fogetPassword=findViewById(R.id.fogetPassword); Register=findViewById(R.id.Register); } // 使用完EventHandler需注销,否则可能出现内存泄漏 @Override protected void onDestroy() { super.onDestroy(); SMSSDK.unregisterEventHandler(eh); } }