package com.quark.jianzhidaren; import java.util.HashMap; import java.util.Map; import org.json.JSONException; import org.json.JSONObject; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.text.Editable; import android.text.TextWatcher; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnTouchListener; import android.view.inputmethod.InputMethodManager; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.android.volley.AuthFailureError; import com.android.volley.DefaultRetryPolicy; import com.android.volley.Request; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.StringRequest; import com.carson.constant.ConstantForSaveList; import com.carson.constant.JiaoyanUtil; import com.lidroid.xutils.ViewUtils; import com.lidroid.xutils.view.annotation.ViewInject; import com.lidroid.xutils.view.annotation.event.OnClick; import com.parttime.main.MainTabActivity; import com.qingmu.jianzhidaren.R; import com.quark.common.Url; import com.quark.ui.widget.CustomDialog; import com.quark.utils.Util; /** * 忘记密码 * * @author Administrator * */ public class ForgetPwdActivity extends BaseActivity { private LinearLayout imageBtn; @ViewInject(R.id.telephone) private EditText telephone; // 发送验证码按钮 @ViewInject(R.id.code) private Button code; @ViewInject(R.id.inputcode) private EditText inputcode; @ViewInject(R.id.password) private EditText password; @ViewInject(R.id.againpassword) private EditText againpassword; @ViewInject(R.id.regin) private Button regin; @ViewInject(R.id.code_vetify_imv) private ImageView codeVetifyImv; String telephoneStr; String telephoneStrTemp; String nameStr; String inputcodeStr; String passwordStr; String againpasswordStr; String codeStr; String codeStrget; String url; String sendMSMUrl; SharedPreferences sp; private long current_time;// 点击发送验证码的时候 String jiaoyanUrl;// 校验验证码是否正确 private boolean codeFlag;// 验证码是否正确 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.forget_password); ViewUtils.inject(this); // 键盘隐藏 LinearLayout activity_main = (LinearLayout) findViewById(R.id.forget_main); activity_main.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); return imm.hideSoftInputFromWindow(getCurrentFocus() .getWindowToken(), 0); } }); sp = getSharedPreferences("jrdr.setting", MODE_PRIVATE); url = Url.COMPANY_FORGETPASSWORD + "?token=" + MainTabActivity.token; sendMSMUrl = Url.COMPANY_SENDMSM_FORGETPASSWORD + "?token=" + MainTabActivity.token; jiaoyanUrl = Url.MESSAGE_VALIDATE + "?token=" + MainTabActivity.token; // 返回 imageBtn = (LinearLayout) findViewById(R.id.back); imageBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub ForgetPwdActivity.this.finish(); } }); // 监听验证码框内容改变 inputcode.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { } @Override public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { } @Override public void afterTextChanged(Editable arg0) { if (arg0 != null && !"".equals(arg0.toString())) { if (arg0.toString().length() != 6) { // 验证码不是6位 codeVetifyImv.setImageResource(R.drawable.vertify_no); codeVetifyImv.setVisibility(View.VISIBLE); } else { // 验证码是6位的时候先判断是否符合规则 if (JiaoyanUtil.vertifyCode(arg0.toString())) { // 访问服务端验证验证码是否正确 // 先判断是否输入了正确的手机 telephoneStr = telephone.getText().toString(); if (Util.isMobileNO(telephoneStr)) { vertifyCode(arg0.toString()); } else { showToast(getResources().getString( R.string.regist_edt_right_tel)); } } else { showToast(getResources().getString( R.string.regist_code_error)); } } } else { codeVetifyImv.setVisibility(View.GONE); } } }); // 收不到验证码 TextView cant_get_code_tv = (TextView) findViewById(R.id.cant_get_code_tv); cant_get_code_tv.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { showAlertKefuDialog("什么,收不到短信验证码?请联系客服!", "温馨提示"); } }); } /** * 验证验证码是否正确 * */ private void vertifyCode(final String code) { StringRequest request = new StringRequest(Request.Method.POST, jiaoyanUrl, new Response.Listener<String>() { @Override public void onResponse(String response) { JSONObject json; try { json = new JSONObject(response); JSONObject jsont = json .getJSONObject("ResponseStatus"); int status = jsont.getInt("status"); // 0:失败 1:成功 if (status == 0) { codeFlag = false; codeVetifyImv .setImageResource(R.drawable.vertify_no); codeVetifyImv.setVisibility(View.VISIBLE); } else if (status == 1) { codeFlag = true; codeVetifyImv .setImageResource(R.drawable.vertify_yes); codeVetifyImv.setVisibility(View.VISIBLE); } else { codeFlag = false; codeVetifyImv .setImageResource(R.drawable.vertify_no); codeVetifyImv.setVisibility(View.VISIBLE); } } catch (JSONException e) { e.printStackTrace(); codeFlag = false; codeVetifyImv .setImageResource(R.drawable.vertify_no); codeVetifyImv.setVisibility(View.VISIBLE); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { codeFlag = false; showToast(getResources().getString( R.string.regist_request_server_fail)); } }) { @Override protected Map<String, String> getParams() throws AuthFailureError { Map<String, String> map = new HashMap<String, String>(); map.put("telephone", telephoneStr); map.put("code", code); return map; } }; queue.add(request); request.setRetryPolicy(new DefaultRetryPolicy( ConstantForSaveList.DEFAULTRETRYTIME * 1000, 1, 1.0f)); } /** * 联系客服 */ public void showAlertKefuDialog(String str, final String str2) { CustomDialog.Builder builder = new CustomDialog.Builder(this); builder.setMessage(str); builder.setTitle(str2); builder.setPositiveButton("联系客服", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); Intent intent = new Intent( Intent.ACTION_CALL, Uri.parse("tel:" + ConstantForSaveList.CARSON_CALL_NUMBER)); ForgetPwdActivity.this.startActivity(intent); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int arg1) { dialog.dismiss(); } }); builder.create().show(); } // 点击修改密码 public void showAlertDialog(String str, final String str2) { CustomDialog.Builder builder = new CustomDialog.Builder(this); builder.setMessage(str); builder.setTitle(str2); builder.setPositiveButton("确 定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); if (str2.equals("修改成功")) { // Intent intent = new Intent(); // intent.setClass(getApplicationContext(), // FindPJLoginActivity.class); // startActivity(intent); Editor edit = sp.edit(); edit.putString("remember_pwd", ""); edit.commit(); ForgetPwdActivity.this.finish(); } } }); builder.create().show(); } @OnClick(R.id.code) public void sendMSM(View view) { telephoneStr = telephone.getText().toString(); if (Util.isMobileNO(telephoneStr)) { telephoneStrTemp = telephoneStr; current_time = System.currentTimeMillis(); if (current_time - ConstantForSaveList.regist_time > 60 * 1000) { code.setClickable(false); handler.postDelayed(runnable, 1000); sendMSM(); } else { showToast("一分钟内请勿重复提交^_^"); code.setClickable(false); handler.postDelayed(runnable2, 10); } } else { showToast(getResources().getString(R.string.regist_edt_right_tel)); } } @OnClick(R.id.regin) public void reginOnclick(View v) { telephoneStr = telephone.getText().toString(); passwordStr = password.getText().toString().trim(); codeStr = inputcode.getText().toString(); if (check()) { showWait(true); StringRequest request = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() { @Override public void onResponse(String response) { showWait(false); int status = 9999999; try { JSONObject js; js = new JSONObject(response); JSONObject sd = js .getJSONObject("ResponseStatus"); status = sd.getInt("status"); // Toast.makeText(ForgetPwdActivity.this, // ""+status, 0).show(); if (status == 2) { showAlertDialog("现在就去登录吧", "修改成功"); } else { String msg = sd.getString("msg"); if (msg == null || "".equals(msg)) msg = "修改失败"; showToast(msg); } } catch (JSONException e) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { showWait(false); showAlertDialog("你的网络不够给力,再试一次吧!", "找回失败"); } }) { @Override protected Map<String, String> getParams() throws AuthFailureError { Map<String, String> map = new HashMap<String, String>(); map.put("telephone", telephoneStr); map.put("password", JiaoyanUtil.MD5(passwordStr)); map.put("code", codeStr); return map; } }; queue.add(request); request.setRetryPolicy(new DefaultRetryPolicy( ConstantForSaveList.DEFAULTRETRYTIME * 1000, 1, 1.0f)); } } public boolean check() { // codeStr = inputcode.getText().toString(); // if (codeStr == null // || (!codeStr.equals(codeStrget) && (!codeStr.equals("9999999")))) { // showToast("验证码错误"); // return false; // } if (!codeFlag) { showToast(getResources().getString(R.string.regist_code_error)); return false; } passwordStr = password.getText().toString(); againpasswordStr = againpassword.getText().toString(); if (passwordStr == null || againpasswordStr == null || !passwordStr.equals(againpasswordStr)) { showToast("两次输入的密码不相同"); return false; } if (passwordStr.trim().length() < 6) { showToast("密码不能少于6个字符"); return false; } if (telephoneStrTemp == null || telephoneStr == null || !telephoneStrTemp.equals(telephoneStr)) { showToast("手机号码改变请重新获取验证码"); code.setText("发送验证码"); recLen = 1; code.setClickable(true); return false; } return true; } public void sendMSM() { StringRequest request2 = new StringRequest(Request.Method.POST, sendMSMUrl, new Response.Listener<String>() { @Override public void onResponse(String response) { try { JSONObject js = new JSONObject(response); JSONObject jsstatus = js .getJSONObject("ResponseStatus"); String msg = jsstatus.getString("msg"); if (jsstatus.getInt("status") == 1) { ConstantForSaveList.regist_time = current_time;// 保存进入界面的时间 } else { showToast(msg); } } catch (JSONException e) { showToast("获取验证码失败"); e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { showToast("获取验证码失败,请检查网络环境"); } }) { @Override protected Map<String, String> getParams() throws AuthFailureError { Map<String, String> map = new HashMap<String, String>(); map.put("telephone", telephoneStr); return map; } }; queue.add(request2); request2.setRetryPolicy(new DefaultRetryPolicy( ConstantForSaveList.DEFAULTRETRYTIME * 1000, 1, 1.0f)); } // 倒计时 int recLen = 60; Handler handler = new Handler(); Runnable runnable = new Runnable() { @Override public void run() { recLen--; if (recLen > 0) { code.setText("等待" + recLen + "秒"); handler.postDelayed(this, 1000); } else { code.setText("发送验证码"); recLen = 60; code.setClickable(true); } } }; long recLen2 = 60; Runnable runnable2 = new Runnable() { @Override public void run() { recLen2--; if (recLen2 > 0) { code.setText(getResources().getString(R.string.regist_wait) + recLen2 + getResources().getString(R.string.regist_second)); handler.postDelayed(this, 1000); } else { code.setText(getResources().getString(R.string.regist_sendcode)); recLen2 = 60; code.setClickable(true); } } }; // ====倒計時end=========== @Override protected void onStop() { super.onStop(); queue.cancelAll(TAG); } }