admin
2022-08-09 399ac289f80b7a40aa4210341db6b447cacdcf14
app/src/main/java/com/tejia/lijin/app/ui/mine/LoginSelectActivity.java
@@ -1,46 +1,57 @@
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.graphics.Color;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.widget.FrameLayout;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.androidquery.AQuery;
import com.mobile.auth.gatewayauth.AuthUIConfig;
import com.mobile.auth.gatewayauth.PhoneNumberAuthHelper;
import com.mobile.auth.gatewayauth.TokenResultListener;
import com.tejia.lijin.app.util.user.AliyunSmsOneKeyLoginManager;
import com.tencent.mm.opensdk.modelmsg.SendAuth;
import com.umeng.analytics.MobclickAgent;
import com.wpc.library.util.common.DimenUtils;
import com.wpc.library.util.common.StringUtils;
import com.wpc.library.widget.PhoneNumberClearEditText;
import com.google.gson.Gson;
import com.tejia.lijin.app.BasicTextHttpResponseHandler;
import com.tejia.lijin.app.R;
import com.tejia.lijin.app.ShoppingApi;
import com.tejia.lijin.app.ShoppingApplication;
import com.tejia.lijin.app.entity.UserInfo;
import com.tejia.lijin.app.entity.eventbus.WXLoginEvent;
import com.tejia.lijin.app.ui.BaseActivity;
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.ui.invite.ShareBrowserActivity;
import com.tejia.lijin.app.util.Constant;
import com.tejia.lijin.app.util.KeFuUtil;
import com.tejia.lijin.app.util.SystemParamsUtil;
import com.tejia.lijin.app.util.TopStatusSettings;
import com.tejia.lijin.app.util.ui.dialog.DialogUtil;
import com.tejia.lijin.app.util.umengCustomEvent.UserCustomEvent;
import com.tejia.lijin.app.util.user.AccountBindManager;
import com.tejia.lijin.app.util.user.AliyunSmsOneKeyLoginManager;
import com.tejia.lijin.app.util.user.LoginManager;
import com.tejia.lijin.app.util.user.QQLoginManager;
import com.tejia.lijin.app.util.user.UserUtil;
import com.tejia.lijin.wxapi.WXEntryActivity;
import com.tencent.connect.auth.QQToken;
import com.tencent.mm.opensdk.modelmsg.SendAuth;
import com.tencent.tauth.DefaultUiListener;
import com.tencent.tauth.IUiListener;
import com.tencent.tauth.Tencent;
import com.tencent.tauth.UiError;
import com.umeng.analytics.MobclickAgent;
import com.wpc.library.util.SingleToast;
import com.wpc.library.util.common.StringUtils;
import com.wpc.library.widget.PhoneNumberClearEditText;
import org.apache.http.Header;
import org.json.JSONException;
import org.json.JSONObject;
import de.greenrobot.event.EventBus;
@@ -49,7 +60,7 @@
 * Created by weikou2015 on 2017/12/15.
 */
public class LoginSelectActivity extends Activity implements View.OnClickListener {
public class LoginSelectActivity extends BaseActivity implements View.OnClickListener {
    public final static int TYPE_LOGIN = 1;//登录
    public final static int TYPE_BIND = 2;//绑定
@@ -71,33 +82,43 @@
    private AliyunSmsOneKeyLoginManager aliyunSmsOneKeyLoginManager;
    private boolean showOnkeyLoginToast = false;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login_select);
        setShowRecommend(false);
        mAquery = new AQuery(this);
        TopStatusSettings.setStatusViewAndDeepColorNoView(this);
        initData(getIntent());
        String from = getIntent().getStringExtra("from");
        UserCustomEvent.userLogin(this, StringUtils.isEmpty(from) ? "其它" : from);
        EventBus.getDefault().register(this);
        aliyunSmsOneKeyLoginManager = new AliyunSmsOneKeyLoginManager(this, null);
        String secretInfo = "rb6R3o8sx4BVXzip2GLC27gDVtY8EWD3BHYM8dAuvCE1e7Ux/6jHkaZjgOStr/EGvyH0Q2XHZnM6u0tp7mXY3wsHv6+bJaB6hsgzYEu1up3UgmIIrGwNOkDInWe5n6QOnNN+XSc4oF3Od1AJtAgd6oun7JkrbdJCqDN5qTPXF7rS44sYGlh7apz+fJAU9Nn1/Jzt5qdqEWsjmqu07Z3Gasrl+cEeBC9li2+5yqAnnXB+PflFHd/kdN9iCHRuY99qBVUizej95oL/jRMzw4SQKgWDW2PF9llOcSyYWivRGeFAaDISQSmc4g==";
        aliyunSmsOneKeyLoginManager = new AliyunSmsOneKeyLoginManager(this, secretInfo);
        aliyunSmsOneKeyLoginManager.init(new AliyunSmsOneKeyLoginManager.IOneKeyLoginListener() {
            @Override
            public void onFail(String st) {
                if (showOnkeyLoginToast) {
                    showOnkeyLoginToast = false;
                    android.widget.Toast.makeText(LoginSelectActivity.this, st, Toast.LENGTH_SHORT).show();
                }
            }
            @Override
            public void onCancel() {
                showOnkeyLoginToast = true;
            }
            @Override
            public void onEnvCheckSuccess() {
                showOnkeyLoginToast = false;
                //掉起授权框
                aliyunSmsOneKeyLoginManager.startGetLoginToken();
            }
            @Override
@@ -107,13 +128,108 @@
            @Override
            public void onToken(String token) {
                aliyunSmsOneKeyLoginManager.quitLoginPage();
                //登录
                if (type == TYPE_LOGIN) {
                    LoginManager.loginByPhone(null, null, token, new LoginManager.LoginAndBindListener() {
                        @Override
                        public void onLoginStart() {
                            DialogUtil.show(loadingDialog);
                        }
                        @Override
                        public void onLoginFinish() {
                            DialogUtil.dismiss(loadingDialog);
                        }
                        @Override
                        public void onLoginSuccess(UserInfo user) {
                            UserUtil.loginSuccess(getApplicationContext(), user);
                            Toast.makeText(getApplicationContext(), "恭喜你,登录成功", Toast.LENGTH_SHORT).show();
                            finish();
                        }
                        @Override
                        public void onLoginFail(int code, String msg) {
                            Toast.makeText(LoginSelectActivity.this, msg, Toast.LENGTH_SHORT).show();
                        }
                    });
                } else if (type == TYPE_BIND_WITHOUT_LOGINED) {
                    LoginManager.loginWithPhone(null, null, token, key, new LoginManager.LoginAndBindListener() {
                        @Override
                        public void onBindStart() {
                            DialogUtil.show(loadingDialog);
                        }
                        @Override
                        public void onBindFinish() {
                            DialogUtil.dismiss(loadingDialog);
                        }
                        @Override
                        public void onBindSuccess(UserInfo user) {
                            UserUtil.loginSuccess(getApplicationContext(), user);
                            Toast.makeText(getApplicationContext(), "恭喜你,登录成功", Toast.LENGTH_SHORT).show();
                            finish();
                        }
                        @Override
                        public void onBindFail(int code, String msg) {
                            Toast.makeText(LoginSelectActivity.this, msg, Toast.LENGTH_SHORT).show();
                        }
                    });
                } else {
                    //电话号码绑定
                    AccountBindManager.bindPhone(getApplicationContext(), null, null, token, new LoginManager.LoginAndBindListener() {
                        @Override
                        public void onBindFail(int code, String msg) {
                            super.onBindFail(code, msg);
                            if (code == 2) {
                                AddZFBInfoDialog.Builder builder = new AddZFBInfoDialog.Builder(LoginSelectActivity.this);
                                builder.setTitle("号码已占用提示").setMessage("很抱歉,该手机号已被其他帐号占用," +
                                        "若要继续完成本帐号手机号更换,请去取消占用或更换其他手机号,谢谢。\n")
                                        .setPositiveButton("知道了", new DialogInterface.OnClickListener() {
                                            @Override
                                            public void onClick(DialogInterface dialog, int which) {
                                                dialog.dismiss();
                                            }
                                        }).create().show();
                                setResult(100);
                            } else {
                                Toast.makeText(getApplicationContext(), 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);
                            UserUtil.loginSuccess(getApplicationContext(), user);
                            Toast.makeText(getApplicationContext(), "绑定成功", Toast.LENGTH_SHORT).show();
                            finish();
                        }
                    });
                }
            }
        });
//        openOneKeyLogin(showOnkeyLoginToast);
    }
    private synchronized void openOneKeyLogin(final boolean notify) {
        ShoppingApi.allowOneKeyLogin(this, UserUtil.getLoginUid(this), new BasicTextHttpResponseHandler() {
        ShoppingApi.allowOneKeyLogin(this, new BasicTextHttpResponseHandler() {
            @Override
            public void onStart() {
@@ -122,11 +238,11 @@
            @Override
            public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
                if (jsonObject.optBoolean("IsPost")) {
                if (jsonObject.optInt("code") == 0) {
                    aliyunSmsOneKeyLoginManager.checkEnv();
                } else {
                    if (notify) {
                        Toast.makeText(PhoneLoginActivity.this, jsonObject.optString("Error"), Toast.LENGTH_SHORT).show();
                        Toast.makeText(LoginSelectActivity.this, jsonObject.optString("msg"), Toast.LENGTH_SHORT).show();
                    }
                }
            }
@@ -136,8 +252,6 @@
                DialogUtil.dismiss(loadingDialog);
            }
        });
    }
    private void initData(Intent intent) {
@@ -177,9 +291,28 @@
     *添加监听
     */
    private void addListener() {
        tv_login_gain_sms.setOnClickListener(this);
        tv_user_agreement.setOnClickListener(this);
        tv_other_login.setOnClickListener(this);
        tv_privacy_policies.setOnClickListener(this);
        mAquery.id(R.id.tv_login_onekey).clicked(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openOneKeyLogin(true);
            }
        });
        mAquery.id(R.id.iv_close).clicked(this);
        mAquery.id(R.id.tv_login_wx).clicked(this);
        mAquery.id(R.id.tv_login_qq).clicked(this);
        mAquery.id(R.id.tv_agree).clicked(this);
        mAquery.id(R.id.tv_help).clicked(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(getApplicationContext(), ShareBrowserActivity.class).putExtra("url", SystemParamsUtil.getHelpUrl(getApplicationContext())));
            }
        });
        et_mobile_num.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
@@ -195,12 +328,21 @@
                        canSend = true;
                    }
                }
                if(canSend) {
                    tv_login_gain_sms.setEnabled(canSend);
                }
            }
            @Override
            public void afterTextChanged(Editable editable) {
//                fl_login_gain_sms.setEnabled(editable.length() == 13 ? true : false);
//                fl_login_gain_sms.setBackgroundResource(editable.length() == 13 ?
                String text=editable !=null?editable.toString():"";
                if(text.replace(" ","").length()==11){
                    tv_login_gain_sms.setEnabled(true);
                }else{
                    tv_login_gain_sms.setEnabled(false);
                }
//                tv_login_gain_sms.setBackgroundResource(editable.length() == 13 ?
//                        R.drawable.shape_mobile_login_light : R.drawable.shape_login_gain_sms);
            }
        });
@@ -210,7 +352,6 @@
    protected void onResume() {
        super.onResume();
        Log.i(TAG, "onResume");
        MobclickAgent.onResume(this);
        boolean isLogin = UserUtil.isLogin(getApplicationContext());
        if (isLogin) {//用户已经登录
            if (isWXLogin) {
@@ -240,6 +381,9 @@
                mAquery.id(R.id.ll_other_login).visibility(View.GONE);
                mAquery.id(R.id.tv_login_onekey).text("本机号码一键绑定");
                mAquery.id(R.id.tv_mobile_hint).text(String.format("新的手机号必须没有绑定过其他%s帐号", getResources().getString(R.string.app_name)));
                mAquery.id(R.id.cb_agree).checked(false);
                break;
        }
@@ -273,6 +417,9 @@
                startActivity(intent1);
                break;
            case R.id.tv_login_wx:
                if (!isAgreed()) {
                    return;
                }
                UserCustomEvent.userLoginWeixin(LoginSelectActivity.this);
                if (ShoppingApplication.application.mWxApi.isWXAppInstalled()) {
                    isWXLogin = true;
@@ -285,10 +432,102 @@
                }
                break;
            case R.id.tv_login_qq:
                //TODO QQ登录
                if (!isAgreed()) {
                    return;
                }
                //QQ登录开始
                DialogUtil.show(loadingDialog);
                QQLoginManager.getInstance(getApplicationContext()).startLogin(this, new QQLoginManager.QQLoginListener() {
                    @Override
                    public void onAuthCancel() {
                        DialogUtil.dismiss(loadingDialog);
                    }
                    @Override
                    public void onAuthSuccess(String openId) {
                    }
                    @Override
                    public void onAuthFail(int code, String msg) {
                        DialogUtil.dismiss(loadingDialog);
                        SingleToast.showToast(getApplicationContext(), "QQ授权失败,请稍后再试");
                    }
                    @Override
                    public void onGetUserInfoSuccess(final QQLoginManager.QQUserInfo user) {
                        Log.i(TAG, new Gson().toJson(user));
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                DialogUtil.dismiss(loadingDialog);
                                //TODO 做QQ登录
                                LoginManager.loginByQQ(user, new LoginManager.LoginAndBindListener() {
                                    @Override
                                    public void onLoginStart() {
                                        super.onLoginStart();
                                        DialogUtil.show(loadingDialog);
                                    }
                                    @Override
                                    public void onLoginFinish() {
                                        super.onLoginFinish();
                                        DialogUtil.dismiss(loadingDialog);
                                    }
                                    @Override
                                    public void onLoginFail(int code, String msg) {
                                        super.onLoginFail(code, msg);
                                        Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
                                    }
                                    @Override
                                    public void onLoginSuccess(UserInfo user) {
                                        super.onLoginSuccess(user);
                                        UserUtil.loginSuccess(getApplicationContext(), user);
                                        Toast.makeText(getApplicationContext(), "恭喜你,登录成功", Toast.LENGTH_SHORT).show();
                                        finish();
                                    }
                                    @Override
                                    public void bindPhone(String key) {
                                        super.bindPhone(key);
                                        Intent intent = new Intent(getApplicationContext(), LoginSelectActivity.class);
                                        intent.putExtra("type", LoginSelectActivity.TYPE_BIND_WITHOUT_LOGINED);
                                        intent.putExtra("key", key);
                                        startActivity(intent);
//                                        finish();
                                    }
                                });
                            }
                        });
                    }
                    @Override
                    public void onGetUserInfoFail(int code, String msg) {
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                SingleToast.showToast(getApplicationContext(), "用户信息获取失败,请稍后再试");
                                DialogUtil.dismiss(loadingDialog);
                            }
                        });
                    }
                });
                break;
            case R.id.tv_login_gain_sms:
                if (!isAgreed() && (type == TYPE_LOGIN || type == TYPE_BIND_WITHOUT_LOGINED)) {
                    return;
                }
                tv_login_gain_sms.setEnabled(false);
                UserCustomEvent.userLoginSms(LoginSelectActivity.this);
                isWXLogin = false;
@@ -299,10 +538,20 @@
                }
                break;
            case R.id.tv_login_onekey:
                //TODO 一键登录
            case R.id.tv_agree:
                mAquery.id(R.id.cb_agree).checked(!mAquery.id(R.id.cb_agree).isChecked());
                break;
        }
    }
    private boolean isAgreed() {
        if (!mAquery.id(R.id.cb_agree).isChecked()) {
            LinearLayout ll_user_agreement = (LinearLayout) mAquery.id(R.id.ll_user_agreement).getView();
            ll_user_agreement.startAnimation(AnimationUtils.loadAnimation(this, R.anim.user_agreement));
            SingleToast.showToast(getApplicationContext(), "请同意用户协议与隐私政策");
            return false;
        }
        return true;
    }
    private boolean isIntent = false;
@@ -310,7 +559,6 @@
    @Override
    protected void onPause() {
        super.onPause();
        MobclickAgent.onPause(this);
        if (isIntent) {
            finish();
        }
@@ -477,10 +725,11 @@
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 99 && resultCode == 100) {
            finish();
        }
        QQLoginManager.getInstance(getApplicationContext()).onActivityResult(requestCode, resultCode, data);
        super.onActivityResult(requestCode, resultCode, data);
    }
    public void onEventMainThread(WXLoginEvent event) {
@@ -495,7 +744,8 @@
    @Override
    protected void onDestroy() {
        super.onDestroy();
        aliyunSmsOneKeyLoginManager.quitLoginPage();
        EventBus.getDefault().unregister(this);
        super.onDestroy();
    }
}