Merge branch 'develop_home' into develop_new

This commit is contained in:
oujunhui
2020-05-11 19:53:48 +08:00
10 changed files with 498 additions and 27 deletions

View File

@@ -466,6 +466,17 @@
android:label="输入验证码界面"
android:launchMode="singleTop"
android:screenOrientation="portrait" />
<activity
android:name=".ui.login.BindPhoneActivity"
android:label="绑定手机号界面"
android:launchMode="singleTop"
android:screenOrientation="portrait" />
<activity
android:name=".ui.login.BindCodeActivity"
android:label="绑定输入验证码界面"
android:launchMode="singleTop"
android:screenOrientation="portrait" />
<activity
android:name=".ui.login.QQLoginSelectMemberTypeActivity"
android:label="QQ登录界面"

View File

@@ -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<IMainView, MainPresenter>
*/
private void checkBindPhone() {
// BinderPhoneActivity.start(context, true);
LoginPhoneActivity.start(this);
BindPhoneActivity.start(context);
}
@Subscribe(threadMode = ThreadMode.MAIN)

View File

@@ -49,6 +49,8 @@ import com.yizhuan.erban.common.widget.dialog.DialogUiHelper;
import com.yizhuan.erban.common.widget.dialog.LoginPopupDialog;
import com.yizhuan.erban.reciever.ConnectiveChangedReceiver;
import com.yizhuan.erban.ui.login.AddUserInfoActivity;
import com.yizhuan.erban.ui.login.BindCodeActivity;
import com.yizhuan.erban.ui.login.BindPhoneActivity;
import com.yizhuan.erban.ui.login.ErbanQQMemberBindAndLoginActivity;
import com.yizhuan.erban.ui.login.ForgetPswActivity;
import com.yizhuan.erban.ui.login.LoginActivity;

View File

@@ -0,0 +1,262 @@
package com.yizhuan.erban.ui.login;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.TextUtils;
import android.text.style.ForegroundColorSpan;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.EditText;
import android.widget.TextView;
import androidx.core.content.ContextCompat;
import com.coorchice.library.utils.LogUtils;
import com.trello.rxlifecycle2.android.ActivityEvent;
import com.yizhuan.erban.R;
import com.yizhuan.erban.base.BaseLoginAct;
import com.yizhuan.erban.ui.login.ui.CodeEditText;
import com.yizhuan.xchat_android_core.auth.AuthModel;
import com.yizhuan.xchat_android_core.auth.event.LoginEvent;
import com.yizhuan.xchat_android_core.auth.exception.BanAccountException;
import com.yizhuan.xchat_android_core.auth.exception.IsSuperAdminException;
import com.yizhuan.xchat_android_core.auth.exception.ShowPhoneCodeException;
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 org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import io.reactivex.SingleObserver;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
/**
* @author zhouxiangfeng
* @date 17/2/26
*/
public class BindCodeActivity extends BaseLoginAct {
private static final String TAG = "LoginVertificationActivity";
private CodeEditText codeEt;
private TextView tvGetCode,tvDesc,tvSecond;
private String mPhone;
private boolean isSuperAdmin = false;
private CodeDownDescTimer timer;
private static final String TYPE_SMS = "1";
public static void start(Context context,String phone) {
Intent intent = new Intent(context, BindCodeActivity.class);
intent.putExtra("phone",phone);
context.startActivity(intent);
}
public static void startForResult(Activity context,String phone, int requestCode) {
Intent intent = new Intent(context, BindCodeActivity.class);
intent.putExtra("phone",phone);
context.startActivityForResult(intent, requestCode); // startActivityForResult会导致singletop,singletask失效
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login_code);
initTitleBar("",true);
onFindViews();
initData();
onSetListener();
getSmsCode();
}
@SuppressLint("SetTextI18n")
private void initData() {
mPhone = getIntent().getStringExtra("phone");
codeEt.setFocusable(true);
codeEt.setFocusableInTouchMode(true);
codeEt.requestFocus();
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
}
@Override
protected void setStatusBar() {
StatusBarLightModes(true);
}
private void onFindViews() {
codeEt = findViewById(R.id.et_code);
tvGetCode = findViewById(R.id.tv_get_code);
tvDesc = findViewById(R.id.tv_desc);
tvSecond = findViewById(R.id.tv_second);
}
private void onSetListener() {
codeEt.setOnTextFinishListener(new CodeEditText.OnTextFinishListener() {
@Override
public void onTextFinish(CharSequence text, int length) {
bindPhone();
}
});
tvGetCode.setOnClickListener(v -> {
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<String>() {
@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<UserInfo>() {
@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());
}
});
}
}

View File

@@ -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();
}
}

View File

@@ -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);
}
});

View File

@@ -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();
}
}

View File

@@ -6,14 +6,15 @@
android:layout_height="match_parent"
android:background="@drawable/bg_login">
<com.yizhuan.erban.base.TitleBar
android:id="@+id/title_bar"
android:layout_width="match_parent"
<ImageView
android:id="@+id/iv_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/transparent"
android:src="@drawable/arrow_left_white"
android:padding="@dimen/dp_17"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
/>
<TextView

View File

@@ -4,18 +4,16 @@ import android.Manifest;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import androidx.core.content.ContextCompat;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.TextUtils;
import android.text.style.ForegroundColorSpan;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.ishumei.smantifraud.SmAntiFraud;
import com.netease.mobsec.rjsb.watchman;
import androidx.core.content.ContextCompat;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.netease.nis.quicklogin.QuickLogin;
import com.netease.nis.quicklogin.listener.QuickLoginPreMobileListener;

View File

@@ -0,0 +1,11 @@
package com.yizhuan.xchat_android_core.auth.event;
import lombok.Data;
/**
* 登录成功事件
*/
@Data
public class BindPhoneEvent {
}