MainActivity
package com.example.yanzhengmademo;
import .AppCompatActivity;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.example.DBHelper.UserDBHelper;
import com.example.Dao.UserDao;
import java.util.HashMap;
import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK;
import cn.smssdk.gui.RegisterPage;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
public EventHandler eventHandler;
private Button bt_username_clear;
private Button bt_pwd_clear;
private TextWatcher username_watcher;
private TextWatcher password_watcher;
private EditText et_name;
private EditText et_pass;
private Button button_pass,bt_forget_password,register;
private UserDao dao;
private Cursor cursor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 调用初始化方法
init();
// 调用输入框clear方法
initWatcher();
et_name.addTextChangedListener(username_watcher);
et_pass.addTextChangedListener(password_watcher);
// 调用点击事件
bt_username_clear.setOnClickListener(this);
bt_pwd_clear.setOnClickListener(this);
button_pass.setOnClickListener(this);
bt_forget_password.setOnClickListener(this);
register.setOnClickListener(this);
dao= new UserDao(new UserDBHelper(this));
}
public void init(){
bt_username_clear = (Button) findViewById(.bt_username_clear);
bt_pwd_clear = (Button) findViewById(.bt_pwd_clear);
et_name = (EditText) findViewById(.username);
et_pass = (EditText) findViewById(.password);
button_pass = (Button) findViewById(.pass);
bt_forget_password = (Button) findViewById(.bt_forget_password);
register = (Button) findViewById(.register);
}
// 定义输入框clear显示事件
private void initWatcher() {
username_watcher = new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void afterTextChanged(Editable s) {
et_pass.setText("");
if (s.toString().length() > 0) {
bt_username_clear.setVisibility(View.VISIBLE);
} else {
bt_username_clear.setVisibility(View.INVISIBLE);
}
}
};
password_watcher = new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void afterTextChanged(Editable s) {
if (s.toString().length() > 0) {
bt_pwd_clear.setVisibility(View.VISIBLE);
} else {
bt_pwd_clear.setVisibility(View.INVISIBLE);
}
}
};
}
// 为clear添加点击事件
public void onClick(View v) {
switch (v.getId()){
// clear
case .bt_username_clear:
et_name.setText("");
break;
case .bt_pwd_clear:
et_pass.setText("");
break;
// pass
case .pass:
Intent Main =getIntent();
String userName = et_name.getText().toString();
String passWord = et_pass.getText().toString();
cursor = dao.findUser(userName);
if (!cursor.moveToFirst()) {
Toast.makeText(this, "账号不存在!", Toast.LENGTH_SHORT).show();
}
else {
if (passWord.equals(cursor.getString(cursor.getColumnIndex("_password")))) {
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
}
else {
Toast.makeText(this, "密码错误!", Toast.LENGTH_SHORT).show();
}
}
break;
// bt_forget_password
case .bt_forget_password:
Intent intent_forget= new Intent(MainActivity.this,Forget_password_Activity.class);
startActivity(intent_forget);
finish();
break;
// register
case .register:
Intent intent_register = new Intent(MainActivity.this,RegisterActivity.class);
startActivity(intent_register);
finish();
break;
}
}
public void hidesendCode(){
SMSSDK.setAskPermisionOnReadContact(true);
eventHandler = new EventHandler() {
public void afterEvent(int event, int result, Object data) {
// afterEvent会在子线程被调用,因此如果后续有UI相关操作,需要将数据发送到UI线程
Message msg = new Message();
msg.arg1 = event;
msg.arg2 = result;
msg.obj = data;
new Handler(Looper.getMainLooper(), new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
int event = msg.arg1;
int result = msg.arg2;
Object data = msg.obj;
if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
if (result == SMSSDK.RESULT_COMPLETE) {
// TODO 处理成功得到验证码的结果
// 请注意,此时只是完成了发送验证码的请求,验证码短信还需要几秒钟之后才送达
} else {
// TODO 处理错误的结果
((Throwable) data).printStackTrace();
}
} else if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
if (result == SMSSDK.RESULT_COMPLETE) {
// TODO 处理验证码验证通过的结果
String s = Integer.toString(result);
Log.e("a=",s);
} else {
// TODO 处理错误的结果
String s = Integer.toString(result);
Log.e("b=",s);
((Throwable) data).printStackTrace();
}
}
// TODO 其他接口的返回结果也类似,根据event判断当前数据属于哪个接口
return false;
}
}).sendMessage(msg);
}
};
// 注册一个事件回调,用于处理SMSSDK接口请求的结果
SMSSDK.registerEventHandler(eventHandler);
// 请求验证码,其中country表示国家代码,如“86”;phone表示手机号码,如“13800138000”
}
protected void onDestroy() {
super.onDestroy();
SMSSDK.unregisterEventHandler(eventHandler);
}
public void sendCode(Context context) {
RegisterPage page = new RegisterPage();
//如果使用我们的ui,没有申请模板编号的情况下需传null
page.setTempCode(null);
page.setRegisterCallback(new EventHandler() {
public void afterEvent(int event, int result, Object data) {
if (result == SMSSDK.RESULT_COMPLETE) {
// 处理成功的结果
HashMap<String,Object> phoneMap = (HashMap<String, Object>) data;
String country = (String) phoneMap.get("country"); // 国家代码,如“86”
String phone = (String) phoneMap.get("phone"); // 手机号码,如“13800138000”
// TODO 利用国家代码和手机号码进行后续的操作
Log.e("countrt=",country);
Log.e("phone=",phone);
} else{
// TODO 处理错误的结果
}
}
});
page.show(context);
}
}
RegisterActivity
package com.example.yanzhengmademo;
import .AppCompatActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;
import com.example.DBHelper.UserDBHelper;
import com.example.Dao.UserDao;
import com.example.TheClass.User;
import com.mob.MobSDK;
import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK;
import static com.mob.tools.utils.ResHelper.getStringRes;
public class RegisterActivity extends AppCompatActivity implements View.OnClickListener {
// 定义变量
private EditText et_register_username;
private EditText et_register_password;
private EditText phone;
private EditText cord;
private TextView now;
private Button getCord;
private Button saveCord;
private String iPhone;
private String iCord;
private int time = 60;
private boolean flag = true;
public EventHandler eventHandler;
private RadioGroup group;
private RadioButton button1;
private RadioButton button2;
private UserDao dao;
private Cursor cursor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
dao = new UserDao(new UserDBHelper(this));
// 初始化
init();
MobSDK.init(this);
hidesendCode();
}
// 初始化事件
private void init() {
phone = (EditText) findViewById(.phone);
cord = (EditText) findViewById(.cord);
now = (TextView) findViewById(.now);
getCord = (Button) findViewById(.getcord);
saveCord = (Button) findViewById(.savecord);
getCord.setOnClickListener(this);
saveCord.setOnClickListener(this);
et_register_username = (EditText) findViewById(.et_register_username);
et_register_password = (EditText) findViewById(.et_register_password);
button1 = (RadioButton) findViewById(.rb_student_female);
button2 = (RadioButton) findViewById(.rb_teacher_male);
group = (RadioGroup) findViewById(.rg_kind);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case .getcord:
if (CheckUIInput()) {
iPhone = phone.getText().toString().trim();
SMSSDK.getVerificationCode("86", iPhone);
cord.requestFocus();
getCord.setVisibility(View.GONE);
}
break;
case .savecord: if (!TextUtils.isEmpty(cord.getText().toString().trim())) {
if (cord.getText().toString().trim().length() == 4) {
iCord = cord.getText().toString().trim();
SMSSDK.submitVerificationCode("86", iPhone, iCord);
flag = false;
} else {
Toast.makeText(RegisterActivity.this, "请输入完整验证码", Toast.LENGTH_LONG).show();
cord.requestFocus();
}
} else {
Toast.makeText(RegisterActivity.this, "请输入验证码", Toast.LENGTH_LONG).show();
cord.requestFocus();
}
break;
default:
break;
}
}
// 收集界面输入的数据,并将封装成Student对象
private User getUserFromUI() {
String username = et_register_username.getText().toString();
String password = et_register_password.getText().toString();
String kind = ((RadioButton) findViewById(group.getCheckedRadioButtonId())).getText().toString();
User s=new User(username,password,kind);
return s;
}
private boolean CheckUIInput(){
String username = et_register_username.getText().toString();
String password = et_register_password.getText().toString();
String phonenumber =phone.getText().toString();
int id=group.getCheckedRadioButtonId();
String message = null;
View invadView = null;
cursor = dao.findUser(username);
if (id == -1) {
message = "请选择身份!";
} else if (username.trim().length() == 0) {
message = "请输入用户名!";
invadView = et_register_username;
}else if (cursor.moveToFirst()){
message = "用户名已存在,请重新输入!";
et_register_username.setText("");
invadView = et_register_username;
}
else if (password.trim().length() == 0) {
message = "请输入密码!";
invadView = et_register_password;
}else if (phonenumber.trim().length()==0){
message = "请输入电话!";
invadView = phone;
}else if (phonenumber.trim().length()!=11) {
message = "请输入完整电话!";
invadView = phone;
}
if (message != null) {
Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
if (invadView != null)
invadView.requestFocus();
return false;
}
return true;
}
Handler handlerText =new Handler(){
public void handleMessage(Message msg) {
if(msg.what==1){
if(time>0){
now.setText("验证码已发送"+time+"秒");
time--;
handlerText.sendEmptyMessageDelayed(1, 1000);
}else{
now.setText("提示信息");
time = 60;
now.setVisibility(View.GONE);
getCord.setVisibility(View.VISIBLE);
}
}else{
cord.setText("");
now.setText("提示信息");
time = 60;
now.setVisibility(View.GONE);
getCord.setVisibility(View.VISIBLE);
}
};
};
//验证码送成功后提示文字
private void reminderText() {
now.setVisibility(View.VISIBLE);
handlerText.sendEmptyMessageDelayed(1, 1000);
}
public void hidesendCode(){
SMSSDK.setAskPermisionOnReadContact(true);
eventHandler = new EventHandler() {
public void afterEvent(int event, int result, Object data) {
// afterEvent会在子线程被调用,因此如果后续有UI相关操作,需要将数据发送到UI线程
Message msg = new Message();
msg.arg1 = event;
msg.arg2 = result;
msg.obj = data;
new Handler(Looper.getMainLooper(), new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
int event = msg.arg1;
int result = msg.arg2;
Object data = msg.obj;
if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
if (result == SMSSDK.RESULT_COMPLETE) {
// TODO 处理成功得到验证码的结果
// 请注意,此时只是完成了发送验证码的请求,验证码短信还需要几秒钟之后才送达
reminderText();
Toast.makeText(getApplicationContext(), "验证码已经发送", Toast.LENGTH_SHORT).show();
} else {
// TODO 处理错误的结果
((Throwable) data).printStackTrace();
}
} else if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
if (result == SMSSDK.RESULT_COMPLETE) {
Toast.makeText(getApplicationContext(), "验证码校验成功", Toast.LENGTH_SHORT).show();
/*读入数据*/
User user =getUserFromUI();
long id =dao.addUser(user);
dao.closeDB();
if (id > 0) {
Toast.makeText(getApplicationContext(), "注册成功" ,Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "注册失败", Toast.LENGTH_SHORT).show();
}
/*页面跳转*/
Intent intent = new Intent(RegisterActivity.this,MainActivity.class);
startActivity(intent);
handlerText.sendEmptyMessage(2);
finish();
} else {
if(!flag)
{
((Throwable) data).printStackTrace();
int resId = getStringRes(RegisterActivity.this, "smssdk_network_error");
Toast.makeText(RegisterActivity.this, "验证码错误", Toast.LENGTH_SHORT).show();
cord.selectAll();
if (resId > 0) {
Toast.makeText(RegisterActivity.this, resId, Toast.LENGTH_SHORT).show();
}
}
}
}
// TODO 其他接口的返回结果也类似,根据event判断当前数据属于哪个接口
return false;
}
}).sendMessage(msg);
}
};
// 注册一个事件回调,用于处理SMSSDK接口请求的结果
SMSSDK.registerEventHandler(eventHandler);
// 请求验证码,其中country表示国家代码,如“86”;phone表示手机号码,如“13800138000”
}
protected void onDestroy() {
super.onDestroy();
SMSSDK.unregisterEventHandler(eventHandler);
}
}
Forget_password_Activity
package com.example.yanzhengmademo;
import .AppCompatActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;
import com.example.DBHelper.UserDBHelper;
import com.example.Dao.UserDao;
import com.example.TheClass.User;
import com.mob.MobSDK;
import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK;
import static com.mob.tools.utils.ResHelper.getStringRes;
public class Forget_password_Activity extends AppCompatActivity implements View.OnClickListener {
// 定义变量
private EditText et_register_username;
private EditText et_register_password;
private EditText phone;
private EditText cord;
private TextView now;
private Button getCord;
private Button saveCord;
private String iPhone;
private String iCord;
private int time = 60;
private boolean flag = true;
public EventHandler eventHandler;
private UserDao dao;
private Cursor cursor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_forgetpass);
dao = new UserDao(new UserDBHelper(this));
// 初始化
init();
MobSDK.init(this);
hidesendCode();
}
// 初始化事件
private void init() {
phone = (EditText) findViewById(.phone1);
cord = (EditText) findViewById(.cord1);
now = (TextView) findViewById(.now1);
getCord = (Button) findViewById(.getcord1);
saveCord = (Button) findViewById(.savecord1);
getCord.setOnClickListener(this);
saveCord.setOnClickListener(this);
et_register_username = (EditText) findViewById(.et_forget_username);
et_register_password = (EditText) findViewById(.et_forget_password);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case .getcord1:
if (CheckUIInput()) {
iPhone = phone.getText().toString().trim();
SMSSDK.getVerificationCode("86", iPhone);
cord.requestFocus();
getCord.setVisibility(View.GONE);
}
break;
case .savecord1: if (!TextUtils.isEmpty(cord.getText().toString().trim())) {
if (cord.getText().toString().trim().length() == 4) {
iCord = cord.getText().toString().trim();
SMSSDK.submitVerificationCode("86", iPhone, iCord);
flag = false;
} else {
Toast.makeText(Forget_password_Activity.this, "请输入完整验证码", Toast.LENGTH_LONG).show();
cord.requestFocus();
}
} else {
Toast.makeText(Forget_password_Activity.this, "请输入验证码", Toast.LENGTH_LONG).show();
cord.requestFocus();
}
break;
default:
break;
}
}
// 收集界面输入的数据,并将封装成Student对象
private User getUserFromUI() {
String username = et_register_username.getText().toString();
String password = et_register_password.getText().toString();
User s=new User(username,password);
return s;
}
private boolean CheckUIInput(){
String username = et_register_username.getText().toString();
String password = et_register_password.getText().toString();
String phonenumber =phone.getText().toString();
String message = null;
View invadView = null;
cursor = dao.findUser(username);
if (username.trim().length() == 0) {
message = "请输入用户名!";
invadView = et_register_username;
}else if (!cursor.moveToFirst()){
message = "用户名不存在,请重新输入!";
et_register_username.setText("");
invadView = et_register_username;
}
else if (password.trim().length() == 0) {
message = "请输入新密码!";
invadView = et_register_password;
}else if (phonenumber.trim().length()==0){
message = "请输入电话!";
invadView = phone;
}else if (phonenumber.trim().length()!=11) {
message = "请输入完整电话!";
invadView = phone;
}
if (message != null) {
Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
if (invadView != null)
invadView.requestFocus();
return false;
}
return true;
}
Handler handlerText =new Handler(){
public void handleMessage(Message msg) {
if(msg.what==1){
if(time>0){
now.setText("验证码已发送"+time+"秒");
time--;
handlerText.sendEmptyMessageDelayed(1, 1000);
}else{
now.setText("提示信息");
time = 60;
now.setVisibility(View.GONE);
getCord.setVisibility(View.VISIBLE);
}
}else{
cord.setText("");
now.setText("提示信息");
time = 60;
now.setVisibility(View.GONE);
getCord.setVisibility(View.VISIBLE);
}
};
};
//验证码送成功后提示文字
private void reminderText() {
now.setVisibility(View.VISIBLE);
handlerText.sendEmptyMessageDelayed(1, 1000);
}
public void hidesendCode(){
SMSSDK.setAskPermisionOnReadContact(true);
eventHandler = new EventHandler() {
public void afterEvent(int event, int result, Object data) {
// afterEvent会在子线程被调用,因此如果后续有UI相关操作,需要将数据发送到UI线程
Message msg = new Message();
msg.arg1 = event;
msg.arg2 = result;
msg.obj = data;
new Handler(Looper.getMainLooper(), new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
int event = msg.arg1;
int result = msg.arg2;
Object data = msg.obj;
if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
if (result == SMSSDK.RESULT_COMPLETE) {
// TODO 处理成功得到验证码的结果
// 请注意,此时只是完成了发送验证码的请求,验证码短信还需要几秒钟之后才送达
reminderText();
Toast.makeText(getApplicationContext(), "验证码已经发送", Toast.LENGTH_SHORT).show();
} else {
// TODO 处理错误的结果
((Throwable) data).printStackTrace();
}
} else if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {
if (result == SMSSDK.RESULT_COMPLETE) {
Toast.makeText(getApplicationContext(), "验证码校验成功", Toast.LENGTH_SHORT).show();
/*修改数据*/
User user =getUserFromUI();
int id =dao.updateUser(user);
dao.closeDB();
if (id > 0) {
Toast.makeText(getApplicationContext(), "重置成功" ,Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getApplicationContext(), "重置失败", Toast.LENGTH_SHORT).show();
}
/*页面跳转*/
Intent intent = new Intent(Forget_password_Activity.this,MainActivity.class);
startActivity(intent);
handlerText.sendEmptyMessage(2);
finish();
} else {
if(!flag)
{
((Throwable) data).printStackTrace();
int resId = getStringRes(Forget_password_Activity.this, "smssdk_network_error");
Toast.makeText(Forget_password_Activity.this, "验证码错误", Toast.LENGTH_SHORT).show();
cord.selectAll();
if (resId > 0) {
Toast.makeText(Forget_password_Activity.this, resId, Toast.LENGTH_SHORT).show();
}
}
}
}
// TODO 其他接口的返回结果也类似,根据event判断当前数据属于哪个接口
return false;
}
}).sendMessage(msg);
}
};
// 注册一个事件回调,用于处理SMSSDK接口请求的结果
SMSSDK.registerEventHandler(eventHandler);
// 请求验证码,其中country表示国家代码,如“86”;phone表示手机号码,如“13800138000”
}
protected void onDestroy() {
super.onDestroy();
SMSSDK.unregisterEventHandler(eventHandler);
}
}