package com.tejia.lijin.app.ui.mine;
|
|
import android.app.Activity;
|
import android.content.DialogInterface;
|
import android.content.Intent;
|
import android.content.SharedPreferences;
|
import android.os.Bundle;
|
import android.os.Handler;
|
import android.os.Message;
|
import android.view.View;
|
import android.widget.ImageView;
|
import android.widget.LinearLayout;
|
import android.widget.TextView;
|
import android.widget.Toast;
|
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.google.gson.reflect.TypeToken;
|
import com.tejia.lijin.app.ui.invite.ShareBrowserActivity;
|
import com.tejia.lijin.app.util.SystemParamsUtil;
|
import com.tejia.lijin.app.util.ui.dialog.DialogUtil;
|
import com.tejia.lijin.app.util.user.AccountBindManager;
|
import com.tejia.lijin.app.util.user.LoginManager;
|
import com.xiaomi.mipush.sdk.MiPushClient;
|
import com.tejia.lijin.app.BasicTextHttpResponseHandler;
|
import com.tejia.lijin.app.R;
|
import com.tejia.lijin.app.ShoppingApi;
|
import com.tejia.lijin.app.entity.UserInfo;
|
import com.tejia.lijin.app.ui.dialog.AddZFBInfoDialog;
|
import com.tejia.lijin.app.ui.dialog.ShapeLoadingDialog;
|
import com.tejia.lijin.app.ui.dialog.VerifyMobileDialog;
|
import com.tejia.lijin.app.util.KeFuUtil;
|
import com.tejia.lijin.app.util.TopStatusSettings;
|
import com.tejia.lijin.app.util.downutil.StringUtils;
|
import com.tejia.lijin.app.util.user.UserUtil;
|
import com.tejia.lijin.app.util.verifycode.VerifyCodeViewShowLine;
|
|
import org.apache.http.Header;
|
import org.json.JSONObject;
|
|
import java.util.Timer;
|
import java.util.TimerTask;
|
|
/**
|
* Created by weikou2015 on 2018/5/30.
|
* 短信验证码获取
|
*/
|
|
public class LoginVerifyCodeActivity extends Activity implements View.OnClickListener {
|
private ImageView iv_close;
|
private TextView tv_mobile_num, tv_count_down, tv_count_down_hint, tv_not_received_sms,
|
tv_input_error, tv_top_hint,tv_help;
|
private VerifyCodeViewShowLine et_verify_code_num;
|
LinearLayout ll_verify_code_error;
|
Long uid;
|
String mobileNum;
|
|
private int type;//类型
|
String key;//微信登录绑定电话号码的标识
|
|
@Override
|
protected void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
setContentView(R.layout.activity_login_verify_code);
|
TopStatusSettings.setStatusViewAndDeepColorNoView(this);
|
init();
|
addListener();
|
}
|
|
@Override
|
protected void onStart() {
|
super.onStart();
|
}
|
|
private void init() {
|
iv_close = findViewById(R.id.iv_close);
|
tv_help = findViewById(R.id.tv_help);
|
tv_mobile_num = findViewById(R.id.tv_mobile_num);
|
tv_count_down = findViewById(R.id.tv_count_down);
|
tv_count_down_hint = findViewById(R.id.tv_count_down_hint);
|
tv_not_received_sms = findViewById(R.id.tv_not_received_sms);
|
tv_input_error = findViewById(R.id.tv_input_error);
|
et_verify_code_num = findViewById(R.id.et_verify_code_num);
|
ll_verify_code_error = findViewById(R.id.ll_verify_code_error);
|
tv_top_hint = findViewById(R.id.tv_top_hint);
|
mobileNum = getIntent().getStringExtra("mobile");
|
tv_mobile_num.setText("验证码已发送至+86 " + mobileNum);
|
|
uid = getIntent().getLongExtra("uid", 0L);
|
String from = getIntent().getStringExtra("from");
|
key = getIntent().getStringExtra("key");
|
type = getIntent().getIntExtra("type", LoginSelectActivity.TYPE_LOGIN);
|
// getUserInfo();
|
|
timer = new Timer();
|
timer.schedule(new MyTask(), 1000, 1000);
|
}
|
|
private void addListener() {
|
iv_close.setOnClickListener(this);
|
tv_help.setOnClickListener(this);
|
tv_count_down.setOnClickListener(this);
|
tv_not_received_sms.setOnClickListener(this);
|
et_verify_code_num.setInputCompleteListener(new VerifyCodeViewShowLine.InputCompleteListener() {
|
@Override
|
public void inputComplete() {
|
if (type == LoginSelectActivity.TYPE_BIND) {
|
bindPhoneNew(et_verify_code_num.getEditContent());
|
} else if (type == LoginSelectActivity.TYPE_LOGIN) {
|
loginNew(et_verify_code_num.getEditContent());
|
} else if (type == LoginSelectActivity.TYPE_BIND_WITHOUT_LOGINED) {
|
bindPhoneWithOutLogin(et_verify_code_num.getEditContent(), mobileNum, key);
|
}
|
}
|
|
@Override
|
public void invalidContent() {
|
|
}
|
});
|
}
|
|
@Override
|
protected void onResume() {
|
super.onResume();
|
if (type != LoginSelectActivity.TYPE_LOGIN) {
|
tv_top_hint.setVisibility(View.INVISIBLE);
|
}
|
}
|
|
@Override
|
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
super.onActivityResult(requestCode, resultCode, data);
|
if (resultCode == 1) {
|
setResult(1);
|
}
|
finish();
|
}
|
|
@Override
|
public void onClick(View view) {
|
switch (view.getId()) {
|
case R.id.iv_close:
|
finish();
|
break;
|
case R.id.tv_help:
|
startActivity(new Intent(getApplicationContext(), ShareBrowserActivity.class).putExtra("url", SystemParamsUtil.getHelpUrl(getApplicationContext())));
|
break;
|
case R.id.tv_not_received_sms://信息没有收到
|
AddZFBInfoDialog.Builder builder = new AddZFBInfoDialog.Builder(LoginVerifyCodeActivity.this);
|
builder.setTitle("温馨提示").setMessage("请检查手机号输入是否正确,若仍然是未收到请稍后再试。\n").setPositiveButton("知道了", new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
dialog.dismiss();
|
}
|
}).create().show();
|
break;
|
case R.id.tv_count_down:
|
if (tv_count_down.getText().toString().equalsIgnoreCase("重新获取验证码")) {
|
et_verify_code_num.editText.setText("");
|
getVerificationCode();
|
}
|
break;
|
}
|
}
|
|
/**
|
* 请求服务器发送验证码
|
*/
|
boolean slideVerify = false;
|
ShapeLoadingDialog pd;
|
|
private void getVerificationCode() {
|
if (pd == null) {
|
pd = new ShapeLoadingDialog.Builder(this).build();
|
}
|
pd.show();
|
ShoppingApi.sendMSMLogin(LoginVerifyCodeActivity.this, slideVerify + "", mobileNum, new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
if (jsonObject.optString("code").equalsIgnoreCase("0")) {
|
Toast.makeText(LoginVerifyCodeActivity.this, "即将发送验证码,请稍侯...", Toast.LENGTH_SHORT).show();
|
tv_input_error.setVisibility(View.INVISIBLE);
|
timecount = 59;
|
timer = new Timer();
|
timer.schedule(new MyTask(), 1000, 1000);
|
} else if (jsonObject.optString("code").equalsIgnoreCase("2")) {//滑动验证
|
VerifyMobileDialog.Builder builder = new VerifyMobileDialog.Builder(LoginVerifyCodeActivity.this);
|
builder.setTitle("请向右滑动滑块验证").setMobileNum(mobileNum)
|
.setPositiveButton("", new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
dialog.dismiss();
|
slideVerify = true;
|
getVerificationCode();
|
}
|
}).setNegativeButton("", new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
dialog.dismiss();
|
}
|
}).create().show();
|
} else if (jsonObject.optString("code").equalsIgnoreCase("3")) {//滑动验证
|
AddZFBInfoDialog.Builder builder = new AddZFBInfoDialog.Builder(LoginVerifyCodeActivity.this);
|
builder.setTitle("温馨提示").setMessage("验证码次数超限,请稍后再试\n").setPositiveButton("知道了", new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
dialog.dismiss();
|
}
|
}).create().show();
|
} else {
|
Toast.makeText(LoginVerifyCodeActivity.this, jsonObject.optString("msg"), Toast.LENGTH_SHORT).show();
|
}
|
}
|
|
@Override
|
public void onFinish() {
|
super.onFinish();
|
pd.dismiss();
|
}
|
});
|
|
}
|
|
/**
|
* 请求服务器匹配验证码后登录
|
*/
|
private void loginNew(String code) {
|
|
LoginManager.loginByPhone(mobileNum, code, null, new LoginManager.LoginAndBindListener() {
|
@Override
|
public void onLoginStart() {
|
super.onLoginStart();
|
}
|
|
@Override
|
public void onLoginFinish() {
|
super.onLoginFinish();
|
}
|
|
@Override
|
public void onLoginSuccess(UserInfo user) {
|
super.onLoginSuccess(user);
|
tv_input_error.setVisibility(View.INVISIBLE);
|
UserUtil.loginSuccess(getApplicationContext(), user);
|
Toast.makeText(LoginVerifyCodeActivity.this, "恭喜你,登录成功", Toast.LENGTH_SHORT).show();
|
setResult(100);
|
finish();
|
}
|
|
@Override
|
public void onLoginFail(int code, String msg) {
|
super.onLoginFail(code, msg);
|
tv_input_error.setVisibility(View.VISIBLE);
|
tv_input_error.setText(msg);
|
Toast.makeText(LoginVerifyCodeActivity.this, msg, Toast.LENGTH_SHORT).show();
|
}
|
});
|
}
|
|
/**
|
* 请求服务器匹配验证码后修改手机号
|
*/
|
private void bindPhoneNew(String code) {
|
AccountBindManager.bindPhone(LoginVerifyCodeActivity.this, code, mobileNum, null, new LoginManager.LoginAndBindListener() {
|
|
@Override
|
public void onBindFail(int code, String msg) {
|
super.onBindFail(code, msg);
|
if (code == 2) {
|
AddZFBInfoDialog.Builder builder = new AddZFBInfoDialog.Builder(LoginVerifyCodeActivity.this);
|
builder.setTitle("号码已占用提示").setMessage("很抱歉,该手机号已被其他帐号占用," +
|
"若要继续完成本帐号手机号更换,请去取消占用或更换其他手机号,谢谢。\n")
|
.setPositiveButton("知道了", new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
dialog.dismiss();
|
}
|
}).create().show();
|
setResult(100);
|
} else {
|
tv_input_error.setVisibility(View.VISIBLE);
|
tv_input_error.setText(msg);
|
Toast.makeText(LoginVerifyCodeActivity.this, msg, Toast.LENGTH_SHORT).show();
|
}
|
}
|
|
@Override
|
public void onBindFinish() {
|
super.onBindFinish();
|
}
|
|
@Override
|
public void onBindStart() {
|
super.onBindStart();
|
}
|
|
@Override
|
public void onBindSuccess(UserInfo user) {
|
super.onBindSuccess(user);
|
tv_input_error.setVisibility(View.INVISIBLE);
|
UserUtil.loginSuccess(getApplicationContext(), user);
|
Toast.makeText(LoginVerifyCodeActivity.this, "绑定成功", Toast.LENGTH_SHORT).show();
|
setResult(100);
|
finish();
|
}
|
});
|
}
|
|
|
/**
|
* 在未登录的情况下绑定手机号码
|
*
|
* @param code
|
*/
|
private void bindPhoneWithOutLogin(String code, String mobile, String key) {
|
LoginManager.loginWithPhone(mobile, code, null, key, new LoginManager.LoginAndBindListener() {
|
@Override
|
public void onBindStart() {
|
super.onLoginStart();
|
}
|
|
@Override
|
public void onBindFinish() {
|
super.onLoginFinish();
|
}
|
|
@Override
|
public void onBindSuccess(UserInfo user) {
|
super.onLoginSuccess(user);
|
tv_input_error.setVisibility(View.INVISIBLE);
|
UserUtil.loginSuccess(getApplicationContext(), user);
|
Toast.makeText(LoginVerifyCodeActivity.this, "绑定成功", Toast.LENGTH_SHORT).show();
|
setResult(100);
|
finish();
|
}
|
|
@Override
|
public void onBindFail(int code, String msg) {
|
super.onLoginFail(code, msg);
|
if (code == 2) {
|
AddZFBInfoDialog.Builder builder = new AddZFBInfoDialog.Builder(LoginVerifyCodeActivity.this);
|
builder.setTitle("号码已占用提示").setMessage("很抱歉,该手机号已被其他帐号占用," +
|
"若要继续完成本帐号手机号更换,请去取消占用或更换其他手机号,谢谢。\n")
|
.setPositiveButton("知道了", new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
dialog.dismiss();
|
}
|
}).create().show();
|
setResult(100);
|
} else {
|
tv_input_error.setVisibility(View.VISIBLE);
|
tv_input_error.setText(msg);
|
Toast.makeText(LoginVerifyCodeActivity.this, msg, Toast.LENGTH_SHORT).show();
|
}
|
}
|
});
|
}
|
|
Timer timer;
|
int timecount = 59;
|
|
class MyTask extends TimerTask {
|
@Override
|
public void run() {
|
if (timecount > 0) {
|
handler.sendEmptyMessage(0);
|
} else {
|
handler.sendEmptyMessage(1);
|
}
|
}
|
}
|
|
Handler handler = new Handler() {
|
@Override
|
public void handleMessage(Message msg) {
|
super.handleMessage(msg);
|
switch (msg.what) {
|
case 0:
|
tv_count_down.setClickable(false);
|
tv_count_down_hint.setVisibility(View.VISIBLE);
|
tv_not_received_sms.setVisibility(View.GONE);
|
tv_count_down.setText(timecount + "");
|
timecount--;
|
break;
|
case 1:
|
timer.cancel();
|
tv_count_down.setText("重新获取验证码");
|
tv_count_down.setClickable(true);
|
tv_count_down_hint.setVisibility(View.GONE);
|
tv_not_received_sms.setVisibility(View.VISIBLE);
|
timecount = 59;
|
break;
|
}
|
}
|
};
|
}
|