package eVVM.apk.ui.login; import android.content.Context; import android.content.Intent; import android.os.IBinder; import android.text.TextUtils; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import com.hjq.permissions.OnPermission; import com.hjq.permissions.Permission; import com.hjq.permissions.XXPermissions; import com.hjq.widget.ClearEditText; import java.util.List; import butterknife.BindView; import butterknife.OnClick; import eVVM.apk.R; import eVVM.apk.helper.ConversionUtil; import eVVM.apk.helper.InputTextHelper; import eVVM.apk.helper.MD5; import eVVM.apk.helper.SPUtils; import eVVM.apk.mvp.MvpActivity; import eVVM.apk.ui.My.ExamineActivity; import eVVM.apk.ui.bean.LoginBean; import eVVM.apk.ui.home.FactorAdminActivity; import eVVM.apk.ui.home.FactoryOperatorActivity; import eVVM.apk.ui.home.HomeActivity; import eVVM.apk.ui.launcher.LikeActivity; import eVVM.apk.ui.login.login.LoginContract; import eVVM.apk.ui.login.login.LoginPresenter; public class LoginActivity extends MvpActivity implements LoginContract.View { @BindView(R.id.login_et_phone) ClearEditText loginEtPhone; @BindView(R.id.login_et_pwd) ClearEditText loginEtPwd; //密码输入框 @BindView(R.id.login_tv_forgetpwd) TextView loginTvForgetpwd; //忘记密码 @BindView(R.id.login_btn_login) Button loginBtnLogin; //登录 @BindView(R.id.login_tv_goregist) TextView loginTvGoregist; //去注册 private String getMD5Pwd; private String userPhone; @Override protected int getLayoutId() { return R.layout.activity_login; } @Override protected int getTitleId() { return 0; } @Override protected void initView() { new InputTextHelper.Builder(this) .setMain(loginBtnLogin) .addView(loginEtPhone) .addView(loginEtPwd) .build(); } @Override protected void initData() { getPermissions(); String user_phone = (String) SPUtils.get("USER_PHONE", ""); String user_pwd = (String) SPUtils.get("USER_PWD", ""); if (TextUtils.isEmpty(user_phone) && TextUtils.isEmpty(user_pwd)) { //用户没有登录过 } else { showLoading(); //登陆过 进行自动登录 userPhone = user_phone; getMD5Pwd = user_pwd; getPresenter().login(user_phone, user_pwd); } } private void getPermissions() { // 联系人 String[] CONTACTS = new String[]{ Permission.CAMERA, Permission.RECEIVE_SMS, Permission.READ_SMS, Permission.READ_EXTERNAL_STORAGE, Permission.WRITE_EXTERNAL_STORAGE, Permission.ACCESS_FINE_LOCATION, Permission.ACCESS_COARSE_LOCATION, Permission.REQUEST_INSTALL_PACKAGES}; XXPermissions.with(LoginActivity.this) //.constantRequest() //可设置被拒绝后继续申请,直到用户授权或者永久拒绝 //.permission(Permission.SYSTEM_ALERT_WINDOW, Permission.REQUEST_INSTALL_PACKAGES) //支持请求6.0悬浮窗权限8.0请求安装权限 .permission(CONTACTS) //不指定权限则自动获取清单中的危险权限 .request(new OnPermission() { @Override public void hasPermission(List granted, boolean isAll) { /*if (isAll) { toast("获取权限成功"); }else { toast("获取权限成功,部分权限未正常授予"); }*/ } @Override public void noPermission(List denied, boolean quick) { /*if(quick) { toast("被永久拒绝授权,请手动授予权限"); //如果是被永久拒绝就跳转到应用权限系统设置页面 XXPermissions.gotoPermissionSettings(LoginActivity.this); }else { //toast("获取权限失败,部分功能可能无法使用"); }*/ } }); } @OnClick({R.id.login_tv_forgetpwd, R.id.login_btn_login, R.id.login_tv_goregist}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.login_tv_forgetpwd: startActivity(PasswordForgetActivity.class); break; case R.id.login_btn_login: if (loginEtPhone.getText().toString().length() != 11) { toast(getString(R.string.common_phone_input_error)); } else { //登录 密码进行md5加密 getMD5Pwd = MD5.GetMD5Code(loginEtPwd.getText().toString().trim()); userPhone = loginEtPhone.getText().toString().trim(); getPresenter().login(userPhone, getMD5Pwd); showLoading(); } break; case R.id.login_tv_goregist: startActivity(RegisterActivity.class); break; } } @Override protected LoginPresenter createPresenter() { return new LoginPresenter(); } @Override public void loginError(String msg) { showComplete(); toast(msg); } @Override public void loginSuccess(LoginBean data) { // 处理登录 showComplete(); LoginBean.DataBean userData = data.getData(); SPUtils.put("USER_ID", userData.getId() + ""); SPUtils.put("USER_TOKEN", userData.getToken() + ""); if (userData.getStatus() == 1) {//状态(0禁用 1正常 2删除 3未审核 4审核未通过 5未完成注册 6未同意协议) Log.e("userData", "" + userData.getPassword()); //保存用户数据 SPUtils.put("USER_PHONE", userPhone + ""); SPUtils.put("USER_PWD", getMD5Pwd + ""); SPUtils.put("USER_ROLEID", userData.getRoleId() + ""); SPUtils.put("USER_FACTORY_ID", userData.getFactoryId() + ""); SPUtils.put("USER_NAME", userData.getUserName() + ""); SPUtils.put("PHONE_MODEL", userData.getPhoneModel()); SPUtils.put("USER_EMAIL", userData.getEmail()); SPUtils.put("USER_CALLNUM", userData.getTelephone()); switch (userData.getRoleId()) { //根据不同角色 跳转进入不同的页面 只有厂家管理员不需要判断nfc case 2: //医生 if (!checkGpsAndNfc()) { return; } startActivityFinish(HomeActivity.class); break; case 3: //医药企业管理员 startActivityFinish(FactorAdminActivity.class); break; case 4: //医药企业操作员 if (!checkGpsAndNfc()) { return; } startActivityFinish(FactoryOperatorActivity.class); break; } } else if (userData.getStatus() == 0) { toast("当前账号已被禁用"); } else if (userData.getStatus() == 2) { toast("当前账号已被删除"); } else if (userData.getStatus() == 3) { Intent in = new Intent(this, ExamineActivity.class); in.putExtra("LoginStatusCode", 3); startActivity(in); //toast("您的账号正在审核中,请耐心等待"); } else if (userData.getStatus() == 4) { Intent in = new Intent(this, ExamineActivity.class); in.putExtra("LoginStatusCode", 4); startActivity(in); //toast("审核未通过"); } else if (userData.getStatus() == 5) { // toast("未完成注册"); Intent in = new Intent(this, AuthenticationActivity.class); in.putExtra("registerUserId", data.getData().getId() + ""); startActivity(in); } else if (userData.getStatus() == 6) { Intent in = new Intent(this, ExamineActivity.class); in.putExtra("LoginStatusCode", 6); startActivity(in); } } //点击空白 隐藏软键盘 @Override public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { View v = getCurrentFocus(); if (isShouldHideKeyboard(v, event)) { hideKeyboard(v.getWindowToken()); } } return super.onTouchEvent(event); } /** * 根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘,因为当用户点击EditText时则不能隐藏 * * @param v * @param event * @return */ private boolean isShouldHideKeyboard(View v, MotionEvent event) { if (v != null && (v instanceof EditText)) { //判断是否是EditText int[] l = {0, 0}; v.getLocationInWindow(l); int left = l[0], top = l[1], bottom = top + v.getHeight(), right = left + v.getWidth(); if (event.getX() > left && event.getX() < right && event.getY() > top && event.getY() < bottom) { // 点击EditText的事件,忽略它。 return false; } else { return true; } } // 如果焦点不是EditText则忽略,这个发生在视图刚绘制完,第一个焦点不在EditText上,和用户用轨迹球选择其他的焦点 return false; } /** * 获取InputMethodManager,隐藏软键盘 * * @param token */ private void hideKeyboard(IBinder token) { if (token != null) { InputMethodManager im = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); im.hideSoftInputFromWindow(token, InputMethodManager.HIDE_NOT_ALWAYS); } } }