From 142a774e75c9d6a35758c7f05276d2cfa2bfdc43 Mon Sep 17 00:00:00 2001
From: oujunhui <313127320@qq.com>
Date: Mon, 11 May 2020 19:53:01 +0800
Subject: [PATCH 1/2] =?UTF-8?q?=E7=BB=91=E5=AE=9A=E6=89=8B=E6=9C=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/src/main/AndroidManifest.xml | 11 +
.../com/yizhuan/erban/base/BaseActivity.java | 2 +
.../erban/ui/login/BindCodeActivity.java | 262 ++++++++++++++++++
.../erban/ui/login/BindPhoneActivity.java | 175 ++++++++++++
.../auth/event/BindPhoneEvent.java | 11 +
5 files changed, 461 insertions(+)
create mode 100644 app/src/main/java/com/yizhuan/erban/ui/login/BindCodeActivity.java
create mode 100644 app/src/main/java/com/yizhuan/erban/ui/login/BindPhoneActivity.java
create mode 100644 core/src/main/java/com/yizhuan/xchat_android_core/auth/event/BindPhoneEvent.java
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 1afdc1683..c91e509f7 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -466,6 +466,17 @@
android:label="输入验证码界面"
android:launchMode="singleTop"
android:screenOrientation="portrait" />
+
+
+
{
+ getSmsCode();
+ });
+ }
+
+ @Override
+ protected boolean needSteepStateBar() {
+ return true;
+ }
+
+
+ @Override
+ protected void onDestroy() {
+ codeEt = null;
+ super.onDestroy();
+ stopCountDownTimer();
+ }
+
+
+ @Override
+ public boolean onTouchEvent(MotionEvent event) {
+ View view = getCurrentFocus();
+ boolean isPressEdit = false;
+ if (view instanceof EditText) {
+ if (event.getRawX() >= view.getX() && event.getRawX() <= view.getX() + view.getWidth() && event.getRawY() >= view.getY() && event.getRawY() <= view.getY() + view.getHeight()) {
+ isPressEdit = true;
+ }
+ }
+ if (!isPressEdit) {
+ hideIME();
+ }
+ return super.onTouchEvent(event);
+
+ }
+
+
+ /**
+ * 获取验证码
+ */
+ @SuppressLint("CheckResult")
+ private void getSmsCode() {
+ if (mPhone.length() != 11){
+ return;
+ }
+ AuthModel.get()
+ .sendLoginCode(mPhone,TYPE_SMS)
+ .observeOn(AndroidSchedulers.mainThread())
+ .compose(bindUntilEvent(ActivityEvent.DESTROY))
+ .subscribe(new SingleObserver() {
+ @Override
+ public void onSubscribe(Disposable d) {
+
+ }
+
+ @Override
+ public void onSuccess(String s) {
+ tvDesc.setText(getString(R.string.str_send_code_success)+mPhone);
+ startCountDownTimer();
+ toast(s);
+ setResult(RESULT_OK);
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ toast(e.getMessage());
+// finish();
+ LogUtils.e( "获取短信失败!");
+ }
+ });
+ }
+
+
+
+ @Override
+ public void dealWithLoginError(Throwable e) {
+ if (!(e instanceof IsSuperAdminException)) {
+ String msg = e.getMessage();
+ StringBuilder eventLabel = new StringBuilder("登录注册页-登录失败");
+ if (!TextUtils.isEmpty(msg)) {
+ eventLabel.append(msg);
+ }
+ // 2004可以完整写入
+ StatisticManager.Instance().onEvent(StatisticsProtocol.Event.EVENT_LOGIN_FAILED_CLICK, eventLabel.toString());
+ }
+ if (e instanceof BanAccountException) {
+ isSuperAdmin = false;
+ BanAccountException exception = (BanAccountException) e;
+ String text = "您的账号因" + exception.getMessage() + "被封禁\n解封时间:";
+ int start = text.length();
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日", Locale.getDefault());
+ text += simpleDateFormat.format(new Date(exception.getDate()));
+ SpannableString spannableString = new SpannableString(text);
+ spannableString.setSpan(new ForegroundColorSpan(ContextCompat.getColor(BindCodeActivity.this, R.color.appColor)),
+ start, text.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
+ getDialogManager().showOkCancelWithTitleDialog("您被封号了",
+ spannableString, "确定", "取消", null);
+ } else if (e instanceof ShowPhoneCodeException) {
+ isSuperAdmin = false;
+ ShowPhoneCodeException showPhoneCodeException = (ShowPhoneCodeException) e;
+ toast(e.getMessage());
+ } else {
+ isSuperAdmin = false;
+ toast(e.getMessage());
+ }
+ }
+
+ private void startCountDownTimer() {
+ stopCountDownTimer();
+ timer = new CodeDownDescTimer(tvSecond, tvGetCode,60000, 1000);
+ timer.start();
+ }
+
+ private void stopCountDownTimer() {
+ if (timer != null) {
+ timer.cancel();
+ timer = null;
+ }
+ }
+
+ private void bindPhone() {
+ getDialogManager().showProgressDialog(BindCodeActivity.this, "正在绑定请稍后...");
+ AuthModel.get().bindPhone(
+ mPhone,
+ codeEt.getText().toString()
+ )
+ .compose(bindUntilEvent(ActivityEvent.DESTROY))
+ .subscribe(new SingleObserver() {
+ @Override
+ public void onSubscribe(Disposable d) {
+
+ }
+
+ @Override
+ public void onSuccess(UserInfo s) {
+ getDialogManager().dismissDialog();
+ toast("绑定手机号成功");
+ finish();
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ getDialogManager().dismissDialog();
+ toast(e.getMessage());
+ }
+ });
+ }
+
+}
diff --git a/app/src/main/java/com/yizhuan/erban/ui/login/BindPhoneActivity.java b/app/src/main/java/com/yizhuan/erban/ui/login/BindPhoneActivity.java
new file mode 100644
index 000000000..7550ea15c
--- /dev/null
+++ b/app/src/main/java/com/yizhuan/erban/ui/login/BindPhoneActivity.java
@@ -0,0 +1,175 @@
+package com.yizhuan.erban.ui.login;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.text.Editable;
+import android.text.TextUtils;
+import android.text.TextWatcher;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.ImageView;
+
+import com.yizhuan.erban.R;
+import com.yizhuan.erban.base.BaseActivity;
+import com.yizhuan.erban.ui.login.helper.LogoutHelper;
+import com.yizhuan.xchat_android_core.auth.event.LoginEvent;
+import com.yizhuan.xchat_android_library.utils.NetworkUtils;
+import com.yizhuan.xchat_android_library.utils.TextWatcherWrapper;
+
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
+
+/**
+ * @author zhouxiangfeng
+ * @date 17/2/26
+ */
+public class BindPhoneActivity extends BaseActivity implements View.OnClickListener {
+
+ private static final String TAG = "LoginPhoneActivity";
+
+ private EditText accountEt;
+ private Button btnNext;
+ private ImageView ivBack;
+ public static final String KEY_BACK_LOGIN = "key_back_login";
+ private int REQUEST_CODE = 100;
+
+ private AccountValidator accountValidator = new AccountValidator();
+ private TextWatcher textWatcher = new TextWatcherWrapper() {
+ @Override
+ public void afterTextChanged(Editable s) {
+ checkInput();
+ }
+ };
+
+
+ public static void start(Context context) {
+ Intent intent = new Intent(context, BindPhoneActivity.class);
+ context.startActivity(intent);
+ }
+
+ public static void startForResult(Activity context, int requestCode) {
+ Intent intent = new Intent(context, BindPhoneActivity.class);
+ context.startActivityForResult(intent, requestCode); // startActivityForResult会导致singletop,singletask失效
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_login_phone);
+ onFindViews();
+ onSetListener();
+
+ accountEt.setFocusable(true);
+ accountEt.setFocusableInTouchMode(true);
+ accountEt.requestFocus();
+ this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
+// permission();
+// showLoginTip();
+// AuthModel.get().isFromLogin = true;
+ }
+
+ @Override
+ protected void setStatusBar() {
+ StatusBarLightModes(true);
+ }
+
+ private void onFindViews() {
+ accountEt = findViewById(R.id.et_account);
+ btnNext = findViewById(R.id.btn_next);
+ ivBack = findViewById(R.id.iv_back);
+ }
+
+ private void onSetListener() {
+ btnNext.setOnClickListener(this);
+ btnNext.setEnabled(false);
+ accountEt.addTextChangedListener(textWatcher);
+ ivBack.setOnClickListener(this);
+ }
+
+ private void checkInput() {
+ if (!TextUtils.isEmpty(accountEt.getText().toString()) && accountEt.getText().toString().length() >= 7) {
+ btnNext.setEnabled(true);
+ } else {
+ btnNext.setEnabled(false);
+ }
+ }
+
+ @Override
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.btn_next:
+ if (!NetworkUtils.isNetworkStrictlyAvailable(this)) {
+ checkNetToast();
+ return;
+ }
+ if (!accountValidator.isValid(accountEt.getText().toString())) {
+ toast(accountValidator.getErrorMessage());
+ return;
+ }
+ BindCodeActivity.startForResult(BindPhoneActivity.this,accountEt.getText().toString(),REQUEST_CODE);
+ break;
+
+ case R.id.iv_back:
+ handleFinish();
+ break;
+ default:
+ break;
+ }
+ }
+
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ if (requestCode == REQUEST_CODE &&resultCode == RESULT_OK){
+ finish();
+ }
+ }
+
+ @Override
+ protected boolean needSteepStateBar() {
+ return true;
+ }
+
+
+ @Override
+ protected void onDestroy() {
+ accountEt = null;
+ super.onDestroy();
+ }
+
+
+ @Override
+ public boolean onTouchEvent(MotionEvent event) {
+ View view = getCurrentFocus();
+ boolean isPressEdit = false;
+ if (view instanceof EditText) {
+ if (event.getRawX() >= view.getX() && event.getRawX() <= view.getX() + view.getWidth() && event.getRawY() >= view.getY() && event.getRawY() <= view.getY() + view.getHeight()) {
+ isPressEdit = true;
+ }
+ }
+ if (!isPressEdit) {
+ hideIME();
+ }
+ return super.onTouchEvent(event);
+ }
+
+
+
+ @Override
+ public void onBackPressed() {
+ handleFinish();
+ }
+
+ private void handleFinish() {
+ LogoutHelper.logout();
+ finish();
+ }
+
+}
diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/auth/event/BindPhoneEvent.java b/core/src/main/java/com/yizhuan/xchat_android_core/auth/event/BindPhoneEvent.java
new file mode 100644
index 000000000..dbcbe3bf4
--- /dev/null
+++ b/core/src/main/java/com/yizhuan/xchat_android_core/auth/event/BindPhoneEvent.java
@@ -0,0 +1,11 @@
+package com.yizhuan.xchat_android_core.auth.event;
+
+import lombok.Data;
+
+/**
+ * 登录成功事件
+ */
+@Data
+public class BindPhoneEvent {
+
+}
From 8bf37880b738779503459c7ebc00893130d28efa Mon Sep 17 00:00:00 2001
From: oujunhui <313127320@qq.com>
Date: Mon, 11 May 2020 19:53:30 +0800
Subject: [PATCH 2/2] =?UTF-8?q?=E7=BB=91=E5=AE=9A=E6=89=8B=E6=9C=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/com/yizhuan/erban/MainActivity.java | 3 +-
.../erban/ui/login/LoginCodeActivity.java | 5 +--
.../erban/ui/login/LoginPhoneActivity.java | 37 ++++++++++++-------
.../res/layout/activity_login_phone.xml | 13 ++++---
.../erban/quick_pass/QuickPassLoginAct.java | 6 +--
5 files changed, 37 insertions(+), 27 deletions(-)
diff --git a/app/src/main/java/com/yizhuan/erban/MainActivity.java b/app/src/main/java/com/yizhuan/erban/MainActivity.java
index 657bcb8a2..f026e3dfc 100644
--- a/app/src/main/java/com/yizhuan/erban/MainActivity.java
+++ b/app/src/main/java/com/yizhuan/erban/MainActivity.java
@@ -102,6 +102,7 @@ import com.yizhuan.erban.ui.im.chat.MsgViewHolderText;
import com.yizhuan.erban.ui.im.chat.SignInNoticeMsgViewHolder;
import com.yizhuan.erban.ui.im.chat.SysMsgV2ViewHolder;
import com.yizhuan.erban.ui.im.chat.SysMsgViewHolder;
+import com.yizhuan.erban.ui.login.BindPhoneActivity;
import com.yizhuan.erban.ui.login.BinderPhoneActivity;
import com.yizhuan.erban.ui.login.LoginPhoneActivity;
import com.yizhuan.erban.ui.patriarch.help.LimitEnterRoomHelper;
@@ -693,7 +694,7 @@ public class MainActivity extends BaseMvpActivity
*/
private void checkBindPhone() {
// BinderPhoneActivity.start(context, true);
- LoginPhoneActivity.start(this);
+ BindPhoneActivity.start(context);
}
@Subscribe(threadMode = ThreadMode.MAIN)
diff --git a/app/src/main/java/com/yizhuan/erban/ui/login/LoginCodeActivity.java b/app/src/main/java/com/yizhuan/erban/ui/login/LoginCodeActivity.java
index 5236dd442..7882a1db5 100644
--- a/app/src/main/java/com/yizhuan/erban/ui/login/LoginCodeActivity.java
+++ b/app/src/main/java/com/yizhuan/erban/ui/login/LoginCodeActivity.java
@@ -35,6 +35,7 @@ import com.yizhuan.xchat_android_core.code.CodeModel;
import com.yizhuan.xchat_android_core.code.CodeType;
import com.yizhuan.xchat_android_core.statistic.StatisticManager;
import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol;
+import com.yizhuan.xchat_android_core.user.bean.UserInfo;
import com.yizhuan.xchat_android_library.utils.DeviceUuidFactory;
import org.greenrobot.eventbus.EventBus;
@@ -64,6 +65,7 @@ public class LoginCodeActivity extends BaseLoginAct {
private CodeDownDescTimer timer;
private static final String TYPE_SMS = "1";
+
public static void start(Context context,String phone) {
Intent intent = new Intent(context, LoginCodeActivity.class);
intent.putExtra("phone",phone);
@@ -115,9 +117,6 @@ public class LoginCodeActivity extends BaseLoginAct {
@Override
public void onTextFinish(CharSequence text, int length) {
login();
-// LogUtils.e(text.toString());
-// Intent intent = new Intent(LoginCodeActivity.this,AddUserInfoActivity.class);
-// startActivity(intent);
}
});
diff --git a/app/src/main/java/com/yizhuan/erban/ui/login/LoginPhoneActivity.java b/app/src/main/java/com/yizhuan/erban/ui/login/LoginPhoneActivity.java
index 9abb05253..3d1bc29c2 100644
--- a/app/src/main/java/com/yizhuan/erban/ui/login/LoginPhoneActivity.java
+++ b/app/src/main/java/com/yizhuan/erban/ui/login/LoginPhoneActivity.java
@@ -12,11 +12,11 @@ import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
+import android.widget.ImageView;
-import com.coorchice.library.utils.LogUtils;
import com.yizhuan.erban.R;
import com.yizhuan.erban.base.BaseActivity;
-import com.yizhuan.erban.base.TitleBar;
+import com.yizhuan.erban.ui.login.helper.LogoutHelper;
import com.yizhuan.xchat_android_core.auth.event.LoginEvent;
import com.yizhuan.xchat_android_library.utils.NetworkUtils;
import com.yizhuan.xchat_android_library.utils.TextWatcherWrapper;
@@ -25,6 +25,8 @@ import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
+import io.reactivex.Single;
+
/**
* @author zhouxiangfeng
* @date 17/2/26
@@ -35,6 +37,7 @@ public class LoginPhoneActivity extends BaseActivity implements View.OnClickList
private EditText accountEt;
private Button btnNext;
+ private ImageView ivBack;
private AccountValidator accountValidator = new AccountValidator();
private TextWatcher textWatcher = new TextWatcherWrapper() {
@@ -44,6 +47,7 @@ public class LoginPhoneActivity extends BaseActivity implements View.OnClickList
}
};
+
public static void start(Context context) {
Intent intent = new Intent(context, LoginPhoneActivity.class);
context.startActivity(intent);
@@ -59,7 +63,6 @@ public class LoginPhoneActivity extends BaseActivity implements View.OnClickList
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login_phone);
EventBus.getDefault().register(this);
- initTitleBar("",true);
onFindViews();
onSetListener();
@@ -80,22 +83,14 @@ public class LoginPhoneActivity extends BaseActivity implements View.OnClickList
private void onFindViews() {
accountEt = findViewById(R.id.et_account);
btnNext = findViewById(R.id.btn_next);
- }
-
- @Override
- public void initTitleBar() {
-// LogUtils.e(mIsCheckBindPhone+":mIsCheckBindPhone");
-// if (mTitleBar != null) {
-// if (mIsCheckBindPhone){
-// mTitleBar.setLeftView(null);
-// }
-// }
+ ivBack = findViewById(R.id.iv_back);
}
private void onSetListener() {
btnNext.setOnClickListener(this);
btnNext.setEnabled(false);
accountEt.addTextChangedListener(textWatcher);
+ ivBack.setOnClickListener(this);
}
private void checkInput() {
@@ -120,6 +115,10 @@ public class LoginPhoneActivity extends BaseActivity implements View.OnClickList
}
LoginCodeActivity.start(LoginPhoneActivity.this,accountEt.getText().toString());
break;
+
+ case R.id.iv_back:
+ handleFinish();
+ break;
default:
break;
}
@@ -166,5 +165,17 @@ public class LoginPhoneActivity extends BaseActivity implements View.OnClickList
finish();
}
+ @Override
+ public void onBackPressed() {
+ handleFinish();
+ }
+
+ private void handleFinish() {
+// if (!isBackLogin) {
+// toast("请先绑定手机号");
+// return;
+// }
+ finish();
+ }
}
diff --git a/app/src/model_customer_server/res/layout/activity_login_phone.xml b/app/src/model_customer_server/res/layout/activity_login_phone.xml
index 6c4df613b..14cbeba15 100644
--- a/app/src/model_customer_server/res/layout/activity_login_phone.xml
+++ b/app/src/model_customer_server/res/layout/activity_login_phone.xml
@@ -6,14 +6,15 @@
android:layout_height="match_parent"
android:background="@drawable/bg_login">
-
+ />