package cn.shangyu.gdxzExpert.activity; import static cn.shangyu.gdxzExpert.activity.LoginNewActivity.PatientUrl; import static cn.shangyu.gdxzExpert.activity.RegistActivity.MSG_SEND; import static cn.shangyu.gdxzExpert.umeng.PushHelper.addUMToken; import static cn.shangyu.gdxzExpert.utils.CommonUtil.getDeviceInfo; import static cn.shangyu.gdxzExpert.utils.UIUtils.getHandler; import static cn.shangyu.gdxzExpert.utils.Url.getsendSms; import static cn.shangyu.gdxzExpert.utils.Url.umGetMobile; import static cn.shangyu.gdxzExpert.utils.Url.umVerifyLogin; import static cn.shangyu.gdxzExpert.utils.Url.wechatBindMobile; import android.content.Context; import android.content.Intent; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.Button; import android.widget.EditText; import com.netease.nimlib.sdk.AbortableFuture; import com.netease.nimlib.sdk.NIMClient; import com.netease.nimlib.sdk.RequestCallbackWrapper; import com.netease.nimlib.sdk.ResponseCode; import com.netease.nimlib.sdk.StatusBarNotificationConfig; import com.netease.nimlib.sdk.auth.AuthService; import com.netease.nimlib.sdk.auth.LoginInfo; import com.umeng.message.PushAgent; import com.umeng.umverify.UMResultCode; import com.umeng.umverify.UMVerifyHelper; import com.umeng.umverify.listener.UMTokenResultListener; import com.umeng.umverify.model.UMTokenRet; import org.json.JSONException; import org.json.JSONObject; import java.util.HashMap; import java.util.Map; import cn.shangyu.gdxzExpert.R; import cn.shangyu.gdxzExpert.base.BaseActivity; import cn.shangyu.gdxzExpert.http.OnCallBackFromNet; import cn.shangyu.gdxzExpert.netease.DemoCache; import cn.shangyu.gdxzExpert.netease.config.preference.Preferences; import cn.shangyu.gdxzExpert.netease.config.preference.UserPreferences; import cn.shangyu.gdxzExpert.umeng.AuthPageConfig; import cn.shangyu.gdxzExpert.umeng.BaseUIConfig; import cn.shangyu.gdxzExpert.utils.Constant; import cn.shangyu.gdxzExpert.utils.SharePrefUtil; import cn.shangyu.gdxzExpert.utils.StringUtil; import cn.shangyu.gdxzExpert.utils.ToastUtil; import cn.shangyu.gdxzExpert.utils.UIUtils; import cn.shangyu.gdxzExpert.utils.ValidateUtils; import cn.shangyu.gdxzExpert.widget.LoadingPage; import cn.shangyu.gdxzExpert.widget.TimeButton; public class BindNumberActivity extends BaseActivity implements OnCallBackFromNet { private TimeButton mTb_message; private EditText usernameEditText,messageEditText; private Button bt_login; private String currentUsername,wechat_user_info; private String currentPassword; private String checkInfo; private UMTokenResultListener mTokenResultListener; private UMVerifyHelper mPhoneNumberAuthHelper; private AuthPageConfig mUIConfig; @Override public void setTitle() { top_title.setText("绑定手机"); } @Override public View onCreateSuccessedView() { View view = UIUtils.inflate(R.layout.activity_bind_number); usernameEditText = (EditText) view.findViewById(R.id.username);// 账号 // 设置输入框获得焦点hint提示消失添加监听 usernameEditText.setOnFocusChangeListener(onFocusAutoClearHintListener); messageEditText = (EditText) view.findViewById(R.id.et_get_message); mTb_message = (TimeButton) view.findViewById(R.id.tb_send_message); mTb_message.onCreate(); mTb_message.clearTimer(); mTb_message.setTextBefore("获取验证码").setLenght(60 * 1000); bt_login = (Button) view.findViewById(R.id.bt_login);// 登录 mTb_message.setOnClickListener(this); bt_login.setOnClickListener(this);// 登录 wechat_user_info=getIntent().getStringExtra("wechat_user_info"); sdkInit(); return view; } private void login() { Map param = new HashMap<>(); param.put("mobile",currentUsername); param.put("current_spec",getDeviceInfo()); param.put("wechat_user_info",wechat_user_info); param.put("sms", currentPassword); sendJsonPostParamtoNetSignMD5(wechatBindMobile,param,101,this); } @Override public LoadingPage.ResultState onLoad() { return LoadingPage.ResultState.STATE_SUCCESSED; } @Override protected void processClick(View v) { // AGP 8.0+ R.id 不再是 final 常量,不能用于 switch,改用 if-else int id = v.getId(); if (id == R.id.bt_login) { // 登录 View view = getWindow().peekDecorView(); if (view != null) { InputMethodManager inputmanger = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); inputmanger.hideSoftInputFromWindow(view.getWindowToken(), 0); } if (TextUtils.isEmpty(currentUsername)) { currentUsername = usernameEditText.getText().toString(); } currentPassword = messageEditText.getText().toString(); if (TextUtils.isEmpty(currentUsername)) { ToastUtil.showToast("手机号码不为空"); return; } if (!ValidateUtils.isMobileNum(currentUsername)) { ToastUtil.showToast("手机号码不正确"); return; } if (TextUtils.isEmpty(currentPassword)) { ToastUtil.showToast("验证码不为空"); return; } login(); } else if (id == R.id.tb_send_message) { // 短信验证码 currentUsername = usernameEditText.getText().toString(); Map param = new HashMap<>(); param.put("mobile",currentUsername); param.put("type","7"); sendJsonPostParamtoNetSignMD5(getsendSms,param,MSG_SEND,this); } } public void sdkInit() { // showProgressDialog("网络检测中"); mTokenResultListener = new UMTokenResultListener() { @Override public void onTokenSuccess(String s) { // closeProgressDialog(); mPhoneNumberAuthHelper.hideLoginLoading(); UMTokenRet tokenRet = null; try { tokenRet = UMTokenRet.fromJson(s); if(UMResultCode.CODE_ERROR_ENV_CHECK_SUCCESS.equals(tokenRet.getCode())) { mPhoneNumberAuthHelper.getLoginToken(BindNumberActivity.this,3000); } else if(UMResultCode.CODE_ERROR_ENV_CHECK_SUCCESS.equals(tokenRet.getCode())) { mPhoneNumberAuthHelper.getLoginToken(BindNumberActivity.this,3000); } else if (UMResultCode.CODE_START_AUTHPAGE_SUCCESS.equals(tokenRet.getCode())) { Log.d("LoginTAG", "唤起授权页成功:" + s); } else if (UMResultCode.CODE_GET_TOKEN_SUCCESS.equals(tokenRet.getCode())) { Log.d("LoginTAG", "获取token成功:" + s); // mPhoneNumberAuthHelper.hideLoginLoading(); // mPhoneNumberAuthHelper.quitLoginPage(); getResultWithToken(tokenRet.getToken()); } else { ToastUtil.showMessage(s); } } catch (Exception e) { e.printStackTrace(); Log.d("LoginTAG", "获取token失败:" + e.toString()); } } @Override public void onTokenFailed(String s) { Log.d("LoginTAG", "获取token失败:" + s); mPhoneNumberAuthHelper.hideLoginLoading(); // Toast.makeText(BindNumberActivity.this, s, Toast.LENGTH_SHORT).show(); } }; mPhoneNumberAuthHelper = UMVerifyHelper.getInstance(this, mTokenResultListener); // mPhoneNumberAuthHelper.setAuthSDKInfo("UW4GwA7BR6ezYeEym4Dp4foswuAY4SLnFMauEQYaeMAEMzoa8n7TPIVRxIzi7wmoNYgAufQ7kw1GeRIdyouCHNol4UboQ6RGzVjyXFQLrgZjM8yjsEGiDYOPRzn1/EchKMOO3jtYM3XOTqSNnNk/r0NcBdisBINbskO7IojS33SUoym0IIk7xMAIOsKIb/67wM/GrCB0jxs3Jpiv9spflMP+GtwwpvZY9VXOCLWFshi1nhC63GIg0KFHF+wsDZoS9fAlKnRnayReYRQf9dayywdoh8XXrpoeZpu2rnkUDlkqXDZ11fHA5rC5znhkstd7"); //联通升级 mPhoneNumberAuthHelper.setAuthSDKInfo("ekYGnmwFM/LIyP8CwBJtN7OPVgg9UJuLlAS2yfVvhHYxbd3zx5mzRtkCU2S+81j5t1NjiHwDiirFISu8mApJhsOHqpqq9fDVfmsrcLhEfDUuzlVpPTVYcN0+B2Rxm+zK1FzLVq6VGf+GOLW2NLmH5VbJXLDX5wPdedcHSgsJikyD6+OypaDr/01DjsVLt8ElMqxcrptYWccUAAPQdvucA0tcjQcUN6beJpcB3zSTZghbvt0K6gjrNfzTb3ypudW5iPb55XYEGeqh0K3YmNphTLhiL+GC5oGJ+tNfsjICKau//5TTTmYGAw=="); mUIConfig = BaseUIConfig.init(1,this, mPhoneNumberAuthHelper); mUIConfig.configAuthPage(); mPhoneNumberAuthHelper.checkEnvAvailable(2); } String token; public void getResultWithToken(String token) { this.token=token; showProgressDialog("正在绑定"); Map param = new HashMap<>(); param.put("token",token); sendJsonPostParamtoNetSignMD5(umGetMobile,param,201,this); } @Override public void onCallbackFromThread(String resultJson) { } @Override public void onCallBackFromThread(String resultJson, int resultCode) { Log.e("LoginTAG", "resultJson "+resultJson+" resultCode"+resultCode); switch (resultCode) { case MSG_SEND: try { JSONObject objs = new JSONObject(resultJson); String retcode = objs.getString("code"); String message = objs.getString("message"); if (retcode.equals("200")) { mTb_message.startTimer(); } else { ToastUtil.showToast(message); mTb_message.clearTimer(); } } catch (JSONException e) { // TODO Auto-generated catch block ToastUtil.showToast("获取验证码失败,请重试"); mTb_message.clearTimer(); e.printStackTrace(); } break; case 202: closeProgressDialog(); case 101: try { JSONObject objs = new JSONObject(resultJson); String retcode = objs.optString("code"); String message = objs.optString("msg"); if ("200".equals(retcode)) { getSaveUserInfor(2,objs); // 得到个人资料,并保存 // getSaveUserInfor(2,objs); } else { ToastUtil.showToast(message); } } catch (JSONException e) { e.printStackTrace(); } break; case 201: try { JSONObject objs = new JSONObject(resultJson); String retcode = objs.getString("code"); String message = objs.getString("message"); if (retcode.equals("200")) { if(objs.optJSONObject("data")!=null) { if(objs.optJSONObject("data").optJSONObject("data")!=null &&!StringUtil.isEmpty(objs.optJSONObject("data").optJSONObject("data").optString("mobile"))) { Map param = new HashMap<>(); // param.put("token",token); param.put("mobile",objs.optJSONObject("data").optJSONObject("data").optString("mobile")); param.put("current_spec", getDeviceInfo()); param.put("wechat_user_info",wechat_user_info); sendJsonPostParamtoNetSignMD5(umVerifyLogin,param,202,this); Log.e("LoginTAG", "param "+param.toString()); } } } else { ToastUtil.showToast(message); } } catch (JSONException e) { // TODO Auto-generated catch block ToastUtil.showToast("一键登录失败"); e.printStackTrace(); } break; } } // 保存个人信息 public void getSaveUserInfor(int type,JSONObject objs) throws JSONException { JSONObject date = objs.getJSONObject("data"); String uuid = date.optString("uuid"); String realName = date.optString("realName"); String mobile = date.optString("mobile"); String photo = date.optString("photo"); String email = date.optString("email"); String birthDate = date.optString("birthDate"); String hospitalUuid = date.optString("hospitalUuid"); String hospitalName = date.optString("hospitalName"); String officeUuid = date.optString("officeUuid"); String officeName = date.optString("officeName"); String officePhone = date.optString("officePhone"); String positionUuid = date.optString("positionUuid"); String positionName = date.optString("positionName"); String intro = date.optString("intro"); String certificate = date.optString("certificate"); String certificateImg = date.optString("certificateImg"); String qrcode = date.optString("qrcode"); checkInfo = date.optString("checkInfo"); String cityId = date.optString("cityId"); String countyId = date.optString("countyId"); String provId = date.optString("provId"); int isStar = date.optInt("isStar"); int sex = date.optInt("sex"); int state = date.optInt("state");// 审核状态( 1.待审核 2.审核中 3.需要补充修改资料 4.再次提交审核 5.拒绝 6.已通过 SharePrefUtil.saveString(ct, Constant.USERID, uuid); SharePrefUtil.saveString(ct, Constant.uuid, uuid);// 唯一标识,我的uuid SharePrefUtil.saveString(ct, Constant.realName, realName);// 真实姓名 SharePrefUtil.saveString(ct, Constant.mobile, mobile);// 手机号 if (!StringUtil.isEmpty(currentUsername) && ValidateUtils.isMobileNum(currentUsername)) { SharePrefUtil.saveString(ct, Constant.SP_IS_FIRST_NAME, Constant.mobile, currentUsername);// 手机号,这个为了重新登录后回显之前的手机号 } else if (!StringUtil.isEmpty(mobile) && ValidateUtils.isMobileNum(mobile)) { SharePrefUtil.saveString(ct, Constant.SP_IS_FIRST_NAME, Constant.mobile, mobile);// 手机号,这个为了重新登录后回显之前的手机号 } SharePrefUtil.saveString(ct, Constant.photo, photo);// 头像路径 SharePrefUtil.saveString(ct, "email", email);// 邮箱 SharePrefUtil.saveString(ct, "birthDate", birthDate);// 出生日期 SharePrefUtil.saveString(ct, "hospitalUuid", hospitalUuid);// 坐诊医院uuid SharePrefUtil.saveString(ct, "hospitalName", hospitalName);// 坐诊医院名称 SharePrefUtil.saveString(ct, "officeUuid", officeUuid);// 科室uuid SharePrefUtil.saveString(ct, "officeName", officeName);// 科室名称 SharePrefUtil.saveString(ct, "officePhone", officePhone);// 科室电话 SharePrefUtil.saveString(ct, "positionUuid", positionUuid);// //职称uuid SharePrefUtil.saveString(ct, "positionName", positionName);// //职称名称 SharePrefUtil.saveString(ct, "intro", intro);// 简介 SharePrefUtil.saveString(ct, "certificate", certificate);// 执业资格证 SharePrefUtil.saveString(ct, "certificateImg", certificateImg);// 执业资格证图片 SharePrefUtil.saveString(ct, "qrcode", qrcode);// 二维码 SharePrefUtil.saveString(ct, "checkInfo", checkInfo);// 审核信息 SharePrefUtil.saveString(ct, "cityId", cityId);// 市id SharePrefUtil.saveString(ct, "countyId", countyId);// //区县id SharePrefUtil.saveString(ct, "provId", provId);// 省id SharePrefUtil.saveInt(ct, "isStar", isStar);// 是否是肝胆名医 0否 1是 SharePrefUtil.saveInt(ct, "sex", sex);// 性别(0.男 1.女) SharePrefUtil.saveInt(ct, "state", state);// 审核状态( 1.待审核 addUMToken(PushAgent.getInstance(this).getRegistrationId()); // 2.审核中3.需要补充修改资料 // 4.再次提交审核5.拒绝 6.已通过) // 进行判断是否进入主页面还是进入设置页面 if(type==1)//老的登录 { getLoginInfo(state,objs); } else { getLoginInfo(state,date);//友盟一键登录 } } public void getYunxin(JSONObject objs) throws JSONException { String yx_accid =objs.getString("YX_accid"); String yx_token =objs.getString("YX_token"); SharePrefUtil.saveString(ct, Constant.yx_accid, yx_accid); SharePrefUtil.saveString(ct, Constant.yx_token, yx_token); } public void getLoginInfo(int state,JSONObject objs) throws JSONException { Log.d("LoginTAG","state "+state); if (state != 6) { // 需要完善资料,跳转到完善资料页面 // ToastUtil.showToast("登录成功,请完善资料"); // 启动登录设置信息界面 Log.d("LoginTAG","state1 "+state); Intent intent = new Intent(this, LoginSetInfoActivity.class); intent.putExtra("checkInfo", checkInfo); intent.putExtra("state", state); startActivity(intent); closeProgressDialog(); SharePrefUtil.saveBoolean(ct, Constant.IS_LOGIN, false); this.finish(); } else { getYunxin(objs); // 获取患者列表 String USERID = SharePrefUtil.getString(ct, Constant.USERID, ""); // 获取患者列表存到数据库 BaseActivity.getPatientList(this, PatientUrl, USERID); String yx_accid =SharePrefUtil.getString(ct, Constant.yx_accid, ""); String yx_token =SharePrefUtil.getString(ct, Constant.yx_token, ""); doLauncherAction(); // 登录 loginYunxin(yx_accid,yx_token); } }; private void doLauncherAction() { closeProgressDialog(); // ( 1.待审核 2.审核中 3.需要补充修改资料 4.再次提交审核 5.拒绝 // 6.已通过) // 注册成功跳转 Intent intent = new Intent(); // if(BigModule()) // { // intent.setClass(this, BigMainActivity.class); // // } // else // { intent.setClass(this, MainActivity.class); // } intent.putExtra("launcher_from", 1); startActivity(intent); Constant.islogout = 2; // 保存登陆 SharePrefUtil.saveBoolean(ct, Constant.IS_LOGIN, true); // 1登入系统 2退出系统 3专家客户端在手机前台运行 4.专家客户端在手机后台运行 BaseActivity.foreBack(BindNumberActivity.this, 1); } public void loginYunxin(String yx_accid,String yx_token) { // 演示15s后手动登录,登录成功后,可以正常收发数据 getHandler().postDelayed(() -> { AbortableFuture loginRequest = NIMClient.getService(AuthService.class).login( new LoginInfo(yx_accid, yx_token)); loginRequest.setCallback(new RequestCallbackWrapper() { @Override public void onResult(int code, Object result, Throwable exception) { Log.i("test", "real login, code=" + code); if (code == ResponseCode.RES_SUCCESS) { DemoCache.setAccount(yx_accid); saveLoginInfo(yx_accid, yx_token); // 初始化消息提醒配置 initNotificationConfig(); finish(); } } }); }, 5 * 1000); } private void saveLoginInfo(final String account, final String token) { Preferences.saveUserAccount(account); Preferences.saveUserToken(token); } private void initNotificationConfig() { // 初始化消息提醒 NIMClient.toggleNotification(UserPreferences.getNotificationToggle()); // 加载状态栏配置 StatusBarNotificationConfig statusBarNotificationConfig = UserPreferences.getStatusConfig(); if (statusBarNotificationConfig == null) { statusBarNotificationConfig = DemoCache.getNotificationConfig(); UserPreferences.setStatusConfig(statusBarNotificationConfig); } // 更新配置 NIMClient.updateStatusBarNotificationConfig(statusBarNotificationConfig); } /** * 设置输入框获得焦点hint提示消失 */ public static View.OnFocusChangeListener onFocusAutoClearHintListener = new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { EditText textView = (EditText) v; String hint; if (hasFocus) { hint = textView.getHint().toString(); textView.setTag(hint); textView.setHint(""); } else { hint = textView.getTag().toString(); textView.setHint(hint); } } }; @Override protected void onDestroy() { super.onDestroy(); mUIConfig.release(); } }