package com.hdl.photovoltaic.ui.me;
|
|
|
import android.os.Bundle;
|
import android.os.CountDownTimer;
|
import android.text.Editable;
|
import android.text.TextUtils;
|
import android.text.TextWatcher;
|
import android.view.View;
|
|
import com.hdl.linkpm.sdk.core.exception.HDLException;
|
import com.hdl.photovoltaic.R;
|
import com.hdl.photovoltaic.base.CustomBaseActivity;
|
import com.hdl.photovoltaic.config.UserConfigManage;
|
import com.hdl.photovoltaic.databinding.ActivityBindPhoneBinding;
|
import com.hdl.photovoltaic.enums.VerifyType;
|
import com.hdl.photovoltaic.listener.CloudCallBeak;
|
import com.hdl.photovoltaic.other.HdlAccountLogic;
|
import com.hdl.photovoltaic.other.HdlCommonLogic;
|
import com.hdl.photovoltaic.other.HdlLogLogic;
|
import com.hdl.photovoltaic.other.HdlThreadLogic;
|
import com.sahooz.library.countrypicker.Country;
|
import com.sahooz.library.countrypicker.CountryPickerFragment;
|
import com.sahooz.library.countrypicker.PickCountryCallback;
|
|
/**
|
* 修改绑定手机号的界面
|
*/
|
public class BindPhoneActivity extends CustomBaseActivity {
|
|
private ActivityBindPhoneBinding viewBinding;
|
|
@Override
|
public Object getContentView() {
|
viewBinding = ActivityBindPhoneBinding.inflate(getLayoutInflater());
|
return viewBinding.getRoot();
|
}
|
|
@Override
|
public void onBindView(Bundle savedInstanceState) {
|
setStatusBarTranslucent();
|
getWindow().setNavigationBarColor(getColor(R.color.text_FF000000));
|
//初始化
|
initView();
|
//初始化界面监听器
|
initEvent();
|
|
}
|
|
private void initEvent() {
|
|
viewBinding.toolbarTopRl.topBackLl.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
setResult(20);
|
finish();
|
}
|
});
|
viewBinding.bindAreaParentRl.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
selectArea();
|
}
|
});
|
|
viewBinding.bindPhoneVerificationCodeRl.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
sendVerification();
|
}
|
});
|
|
viewBinding.bindPhoneClearIv.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
viewBinding.bindPhoneEt.setText("");
|
}
|
});
|
|
//输入账号
|
viewBinding.bindPhoneEt.addTextChangedListener(accountTextWatcher);
|
//输入验证码
|
viewBinding.changePhoneVerificationEt.addTextChangedListener(verificationCodeTextWatcher);
|
viewBinding.bindPhoneTv.setOnClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
if (isEnabled()) {
|
String phoneStr = viewBinding.bindPhoneEt.getText().toString();
|
String verificationStr = viewBinding.changePhoneVerificationEt.getText().toString();
|
HdlAccountLogic.getInstance().bindingAccount_C(phoneStr, "", verificationStr, viewBinding.bindAreaNumberTv.getText().toString(), new CloudCallBeak<Boolean>() {
|
@Override
|
public void onSuccess(Boolean obj) {
|
UserConfigManage.getInstance().setBingPhone(phoneStr);
|
UserConfigManage.getInstance().Save();
|
setResult(20);
|
finish();
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
HdlThreadLogic.tipFlashingBox(_mActivity, false, e.getMsg(), e.getCode());
|
}
|
});
|
}
|
}
|
});
|
|
}
|
|
private void initView() {
|
if (UserConfigManage.getInstance().isZh()) {
|
viewBinding.bindAreaTv.setText(getText(R.string.home_chinese_mainland));
|
viewBinding.bindAreaNumberTv.setText("+86");
|
} else {
|
viewBinding.bindAreaTv.setText(getText(R.string.iraq));
|
viewBinding.bindAreaNumberTv.setText("+964");
|
}
|
viewBinding.toolbarTopRl.topTitleTv.setText(R.string.set_change_bind_phone_number);
|
viewBinding.toolbarTopRl.topBackLl.setVisibility(View.VISIBLE);
|
|
checkClearIconShowOrNot(viewBinding.bindPhoneEt.getText().toString());
|
try {
|
Country.load(this);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
HdlCommonLogic.getInstance().setSpan(viewBinding.bindPhoneVerificationTv, viewBinding.bindPhoneVerificationTv.getText().toString(), true, null);
|
}
|
|
/**
|
* 国家手机号区号弹窗
|
*/
|
private void selectArea() {
|
CountryPickerFragment dialog = new CountryPickerFragment(this, new PickCountryCallback() {
|
@Override
|
public void onPick(Country country) {
|
if (country.flag != 0)
|
viewBinding.bindAreaTv.setText(country.translate);
|
String code = "+" + country.code;
|
viewBinding.bindAreaNumberTv.setText(code);
|
}
|
});
|
dialog.show();
|
dialog.setDialogSize();
|
}
|
|
/**
|
* 发送验证码指令
|
*/
|
private void sendVerification() {
|
|
String account = viewBinding.bindPhoneEt.getText().toString();
|
if (TextUtils.isEmpty(account)) {
|
HdlThreadLogic.tipFlashingBox(this, false, getString(R.string.home_login_phone_null), -1);
|
return;
|
}
|
HdlAccountLogic.getInstance().sendVerifyCode_C(true, account, viewBinding.bindAreaNumberTv.getText().toString(), VerifyType.VerifyType_3, new CloudCallBeak<Boolean>() {
|
@Override
|
public void onSuccess(Boolean obj) {
|
countDownTimer.start();
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
HdlThreadLogic.tipFlashingBox(_mActivity, false, e.getMsg(), e.getCode());
|
HdlLogLogic.print(e.getMessage(), e.getCode(), true);
|
}
|
});
|
|
}
|
|
/**
|
* 初始化手机号计时器
|
*/
|
CountDownTimer countDownTimer = new CountDownTimer(60 * 1000, 1000) {
|
@Override
|
public void onTick(long millisUntilFinished) {
|
long time = (millisUntilFinished / 1000);
|
String str = time + "s" + getString(R.string.home_login_psw_verification_repeater);
|
viewBinding.bindPhoneVerificationTv.setText(str);
|
viewBinding.bindPhoneVerificationTv.setEnabled(false);
|
|
}
|
|
@Override
|
public void onFinish() {
|
viewBinding.bindPhoneVerificationTv.setText(getString(R.string.home_login_verification_regain));
|
viewBinding.bindPhoneVerificationTv.setEnabled(true);
|
|
|
}
|
};
|
|
/**
|
* 检测清除图标是否显示
|
*/
|
private void checkClearIconShowOrNot(String s) {
|
if (s.replace(" ", "").length() > 0) {
|
if (viewBinding.bindPhoneClearIv.getVisibility() == View.GONE) {
|
viewBinding.bindPhoneClearIv.setVisibility(View.VISIBLE);
|
}
|
} else {
|
if (viewBinding.bindPhoneClearIv.getVisibility() == View.VISIBLE) {
|
viewBinding.bindPhoneClearIv.setVisibility(View.GONE);
|
}
|
}
|
}
|
|
/**
|
* 校验确认按钮是否启用
|
*/
|
private boolean isEnabled() {
|
String account = viewBinding.bindPhoneEt.getText().toString().replace(" ", "");
|
String verificationCode = viewBinding.changePhoneVerificationEt.getText().toString().replace(" ", "");
|
boolean isEnabled = account.length() > 0 && verificationCode.length() > 0;
|
if (isEnabled) {
|
viewBinding.bindPhoneTv.setTextColor(getColor(R.color.text_E6FFFFFF));
|
} else {
|
viewBinding.bindPhoneTv.setTextColor(getColor(R.color.text_66FFFFFF));
|
}
|
viewBinding.bindPhoneTv.setEnabled(isEnabled);
|
return isEnabled;
|
|
}
|
|
|
/**
|
* 本地校验
|
*/
|
private boolean isLocalCheck() {
|
String phoneStr = viewBinding.bindPhoneEt.getText().toString();
|
String verificationStr = viewBinding.changePhoneVerificationEt.getText().toString();
|
if (TextUtils.isEmpty(phoneStr)) {
|
HdlThreadLogic.tipFlashingBox(this, false, getString(R.string.home_login_phone_null), -1);
|
return false;
|
}
|
if (TextUtils.isEmpty(verificationStr)) {
|
HdlThreadLogic.tipFlashingBox(this, false, getString(R.string.home_login_null_verification_code), -1);
|
return false;
|
}
|
return true;
|
|
}
|
|
/**
|
* 输入账号
|
*/
|
private final TextWatcher accountTextWatcher = new TextWatcher() {
|
@Override
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
|
}
|
|
@Override
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
}
|
|
@Override
|
public void afterTextChanged(Editable s) {
|
checkClearIconShowOrNot(s.toString());
|
isEnabled();
|
}
|
};
|
|
/**
|
* 输入验证码
|
*/
|
private final TextWatcher verificationCodeTextWatcher = new TextWatcher() {
|
@Override
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
|
}
|
|
@Override
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
}
|
|
@Override
|
public void afterTextChanged(Editable s) {
|
isEnabled();
|
}
|
};
|
|
@Override
|
protected void onDestroy() {
|
super.onDestroy();
|
Country.destroy();
|
if (countDownTimer != null) {
|
countDownTimer.cancel();
|
countDownTimer = null;
|
}
|
viewBinding.bindPhoneEt.removeTextChangedListener(accountTextWatcher);
|
viewBinding.changePhoneVerificationEt.removeTextChangedListener(verificationCodeTextWatcher);
|
|
}
|
|
/**
|
* 物理按键返回事件
|
*/
|
@Override
|
public void onBackPressed() {
|
setResult(20);
|
super.onBackPressed();
|
}
|
}
|