package com.quark.setting; 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.View; import android.view.View.OnClickListener; import android.view.Window; import android.widget.Button; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; 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.qingmu.jianzhidaren.R; import com.quark.common.Url; import com.quark.jianzhidaren.BaseActivity; import com.parttime.login.FindPJLoginActivity; import com.parttime.main.MainTabActivity; import com.quark.ui.widget.CustomDialog; import com.quark.utils.Util; /** * 修改登陆手机号码 * * @author Administrator * */ public class EditPhoneActivity extends BaseActivity { @ViewInject(R.id.telephoen_erro) private TextView telephoen_erro; @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.telephone_new) private EditText telephone_new; @ViewInject(R.id.code_vetify_imv) private ImageView codeVetifyImv; private String telephoneStr; private String telephoneStrTemp; private String telephoneNewStr; private String passwordStr; private ImageButton imageBtn; private String url; private String sendMSMUrl; private String codeStr; private String codeStrget; private long current_time;// 点击发送验证码的时候 String jiaoyanUrl;// 校验验证码是否正确 private boolean codeFlag;// 验证码是否正确 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.edit_telephone); ViewUtils.inject(this); url = Url.COMPANY_modifyTelephon + "?token=" + MainTabActivity.token; sendMSMUrl = Url.COMPANY_SEND_TEL_CODE + "?token=" + MainTabActivity.token; RelativeLayout topLayout = (RelativeLayout) findViewById(R.id.top_title_layout); topLayout.setBackgroundColor(getResources().getColor( R.color.guanli_common_color)); jiaoyanUrl = Url.MESSAGE_VALIDATE + "?token=" + MainTabActivity.token; // 返回 imageBtn = (ImageButton) findViewById(R.id.back); imageBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { 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", telephoneNewStr); map.put("code", code); return map; } }; queue.add(request); request.setRetryPolicy(new DefaultRetryPolicy( ConstantForSaveList.DEFAULTRETRYTIME * 1000, 1, 1.0f)); } @OnClick({ R.id.submit, R.id.code }) public void telephoneOnclick(View view) { switch (view.getId()) { case R.id.submit: modifyTelephone(); break; case R.id.code: telephoneNewStr = telephone_new.getText().toString(); if (Util.isMobileNO(telephoneNewStr)) { telephoneStrTemp = telephoneNewStr; 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("请输入正确的新手机号码"); } break; default: break; } } 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"); // 1 成功 其它 失败 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", telephoneNewStr); return map; } }; queue.add(request2); request2.setRetryPolicy(new DefaultRetryPolicy( ConstantForSaveList.DEFAULTRETRYTIME * 1000, 1, 1.0f)); } public void modifyTelephone() { telephoneStr = telephone.getText().toString(); passwordStr = password.getText().toString(); telephoneNewStr = telephone_new.getText().toString(); 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(EditPhoneActivity.this, // ""+status, 0).show(); if (status == 2) {// 用户不存在的时候 // 修改成功 Toast.makeText(EditPhoneActivity.this, "修改手机号码成功", Toast.LENGTH_SHORT) .show(); SharedPreferences sp = getSharedPreferences( "jrdr.setting", MODE_PRIVATE); Editor edit = sp.edit(); edit.putString("remember_tele", telephoneNewStr); edit.commit(); EditPhoneActivity.this.finish(); } 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("new_telephone", telephoneNewStr); map.put("code", codeStr); 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)); EditPhoneActivity.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); } } }); builder.create().show(); } public boolean check() { if (!Util.isMobileNO(telephoneStr)) { showToast("请输入正确的手机号码"); return false; } // codeStr = inputcode.getText().toString(); // if (codeStr == null || (!codeStr.equals(codeStrget))) { // showToast("验证码错误"); // return false; // } if (!codeFlag) { showToast(getResources().getString(R.string.regist_code_error)); return false; } passwordStr = password.getText().toString(); if (!Util.isEmpty(passwordStr)) { showToast("请输入密码"); return false; } if (telephoneStrTemp == null || telephoneNewStr == null || !telephoneStrTemp.equals(telephoneNewStr)) { showToast("手机号码改变请重新获取验证码"); code.setText("发送验证码"); recLen = 1; code.setClickable(true); return false; } return true; } // 倒计时 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=========== }