package com.wb.sc.mk.personal; import java.util.ArrayList; import java.util.List; import org.json.JSONException; import android.content.Intent; import android.graphics.Paint; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.widget.CheckBox; import android.widget.EditText; import android.widget.TextView; import com.android.volley.Response.ErrorListener; import com.android.volley.Response.Listener; import com.android.volley.VolleyError; import com.common.format.HexStringBytes; import com.common.net.volley.VolleyErrorHelper; import com.common.security.Des3Tools; import com.common.widget.ToastHelper; import com.umeng.message.ALIAS_TYPE; import com.umeng.message.PushAgent; import com.umeng.message.proguard.C.e; import com.wb.sc.R; import com.wb.sc.activity.base.BaseActivity; import com.wb.sc.app.SCApp; import com.wb.sc.bean.User; import com.wb.sc.config.NetConfig; import com.wb.sc.config.RespCode; import com.wb.sc.db.DbHelper; import com.wb.sc.mk.main.HomeActivity; import com.wb.sc.mk.main.MainActivity; import com.wb.sc.task.LoginRequest; import com.wb.sc.util.ParamsUtil; /** * * @描述:登录 * @作者:liang bao xian * @时间:2014年10月23日 上午11:37:15 */ public class LoginActivity extends BaseActivity implements OnClickListener, Listener<User>, ErrorListener{ private View loginBtn; private View registerBtn; private TextView forgetPasswordTv; private EditText userphoneEt; private EditText passwordEt; private CheckBox savePwdCb; private LoginRequest mLoginRequest; private User mUser; private String userPhone; private String password; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); getIntentData(); initView(); } @Override public void getIntentData() { } @Override public void initView() { loginBtn = findViewById(R.id.login); loginBtn.setOnClickListener(this); registerBtn = findViewById(R.id.register); registerBtn.setOnClickListener(this); forgetPasswordTv = (TextView) findViewById(R.id.forget_password); forgetPasswordTv.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG); forgetPasswordTv.setOnClickListener(this); userphoneEt = (EditText) findViewById(R.id.userPhone); // userphoneEt.setText("18657436598"); passwordEt = (EditText) findViewById(R.id.password); // passwordEt.setText("123456"); savePwdCb = (CheckBox) findViewById(R.id.save_password); User user = SCApp.getInstance().getUser(); if(!TextUtils.isEmpty(user.phone)) { userphoneEt.setText(user.phone); } if(!TextUtils.isEmpty(user.pssword)) { byte[] result = null; try { result = Des3Tools.deTripleDES(SCApp.getInstance().getDes3Key(), HexStringBytes.String2Bytes(user.pssword)); String pwd = new String(result).trim(); passwordEt.setText(pwd); } catch (Exception e1) { e1.printStackTrace(); } } } @Override public void onClick(View v) { super.onClick(v); switch(v.getId()) { case R.id.login: login(); break; case R.id.register:{ Intent intent = new Intent(this, RegisterActivity.class); startActivity(intent); }break; case R.id.forget_password:{ Intent intent = new Intent(this, ResetPasswordActivity.class); startActivity(intent); }break; } } private void login() { userPhone = userphoneEt.getText().toString(); password = passwordEt.getText().toString(); if(userPhone == null || userPhone.equals("")) { ToastHelper.showToastInBottom(this, R.string.username_empty_toast); return; } if(password == null || password.equals("")) { ToastHelper.showToastInBottom(this, R.string.password_empty_toast); return; } showProcess(R.string.loging_toast); requestLogin(getLoginRequestParams(userPhone, password), this, this); } /** * 获取请求参数 * @return */ private List<String> getLoginRequestParams(String userPhone, String password) { List<String> params = new ArrayList<String>(); params.add(ParamsUtil.getReqParam("FG51", 4)); params.add(ParamsUtil.getReqParam("MC_CENTERM", 16)); params.add(ParamsUtil.getReqParam("00001", 20)); params.add(ParamsUtil.getReqParam(userPhone, 15)); params.add(ParamsUtil.getReqRsaParam(password, 256)); return params; } /** * 执行任务请求 * @param method * @param url * @param params * @param listenre * @param errorListener */ private void requestLogin(List<String> params, Listener<User> listenre, ErrorListener errorListener) { if(mLoginRequest != null) { mLoginRequest.cancel(); } String url = NetConfig.getServerBaseUrl() + NetConfig.EXTEND_URL; mLoginRequest = new LoginRequest(url, params, listenre, errorListener); startRequest(mLoginRequest); } /** * 网络请求错误处理 * */ @Override public void onErrorResponse(VolleyError error) { dismissProcess(); ToastHelper.showToastInBottom(getApplicationContext(), VolleyErrorHelper.getErrorMessage(this, error)); } /** * 请求完成,处理UI更新 */ @Override public void onResponse(User response) { dismissProcess(); if(response.respCode.equals(RespCode.SUCCESS)) { mUser = response; mUser.isLogin = 1; mUser.phone = userPhone; //先写死一个UserId 和 社区ID // mUser.userId = "9b489d54-91fe-4183-9d90-c6d8ca0c8fa0"; mUser.communityId = "db8eeb11-3e04-4eae-9c05-fd572abb1733"; if(savePwdCb.isChecked()) { savePassword(mUser, password); } else { mUser.pssword = ""; } SCApp.getInstance().setUser(mUser); DbHelper.saveUser(mUser); // 设置推送User Id new Thread() { @Override public void run() { PushAgent mPushAgent = PushAgent.getInstance(LoginActivity.this); try { mPushAgent.addAlias(mUser.userId, ALIAS_TYPE.BAIDU); } catch (e e) { e.printStackTrace(); } catch (JSONException e) { e.printStackTrace(); } } }.start(); finish(); // startActivity(new Intent(this, HomeActivity.class)); } else { ToastHelper.showToastInBottom(this, response.respCodeMsg); } } /** * * @描述:选择保存密码,则把密码保存在本地 */ private void savePassword(User user, String password) { // 3DES 加密 byte[] des3Result = null; try { des3Result = Des3Tools.enTripleDES(SCApp.getInstance().getDes3Key(), Des3Tools.extendMsgForDes(password.getBytes())); user.pssword = HexStringBytes.bytes2HexString(des3Result); } catch (Exception e1) { e1.printStackTrace(); } } }