/** * Project Name:XPGSdkV4AppBase * File Name:ForgetPswActivity.java * Package Name:com.gizwits.framework.activity.account * Date:2015-1-27 14:44:57 * Copyright (c) 2014~2015 Xtreme Programming Group, Inc. * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ package com.gizwits.framework.activity.account; import java.io.InputStream; import java.net.URL; import java.util.Timer; import java.util.TimerTask; import android.app.ProgressDialog; import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.InputFilter; import android.text.InputType; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.CompoundButton; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; import android.widget.ToggleButton; import com.gizwits.framework.activity.BaseActivity; import com.gizwits.framework.config.Configs; import com.gizwits.powersocket.R; import com.gizwits.framework.widget.MyInputFilter; import com.xpg.common.useful.NetworkUtils; import com.xpg.common.useful.StringUtils; import com.xpg.ui.utils.ToastUtils; import com.xtremeprog.xpgconnect.XPGWifiSDK; /** * ClassName: Class ForgetPswActivity. <br/> * 忘记密码,该类主要包含了两个修改密码的方法,手机号注册的用户通过获取验证码修改密码,邮箱注册的用户需要通过注册邮箱的重置邮件进行重置。<br/> * date: 2014-12-09 17:27:10 <br/> * * @author StephenC */ public class ForgetPswActivity extends BaseActivity implements OnClickListener { /** * The pb CaptchaCode_Loading */ private ProgressBar CaptchaCode_Loading; /** * The et InputCaptchaCode_farget */ private EditText etInputCaptchaCode_farget; /** * The iv GetCaptchaCode_farget */ private ImageView ivGetCaptchaCode_farget; /** * The btn ReGetCaptchaCode_farget */ private Button btnReGetCaptchaCode_farget; /** * The tv dialog. */ private TextView tvDialog; /** * The et name. */ private EditText etName; /** * The et input code. */ private EditText etInputCode; /** * The et input psw. */ private EditText etInputPsw; /** * The et input email. */ private EditText etInputEmail; /** * The btn get code. */ private Button btnGetCode; /** * The btn re get code. */ private Button btnReGetCode; /** * The btn sureEmail. */ private Button btnSureEmail; /** * The btn phoneReset. */ private Button btnPhoneReset; /** * The btn emailReset. */ private Button btnEmailReset; /** * The ll input menu. */ private LinearLayout llInputMenu; /** * The ll input phone. */ private LinearLayout llInputPhone; /** * The rl input email. */ private RelativeLayout rlInputEmail; /** * The rl dialog. */ private RelativeLayout rlDialog; /** * The btn sure. */ private Button btnSure; /** * The iv back. */ private ImageView ivBack; /** * The tb psw flag. */ private ToggleButton tbPswFlag; /** * The ui_statu statuNow. */ private ui_statu statuNow; /** * The secondleft. */ int secondleft = 60; /** * The timer. */ Timer timer; /** * The dialog. */ ProgressDialog dialog; /** * ClassName: Enum handler_key. <br/> * <br/> * date: 2014-11-26 17:51:10 <br/> * * @author Lien */ private enum handler_key { /** * 倒计时通知 */ TICK_TIME, /** * 修改成功 */ CHANGE_SUCCESS, /** * Toast弹出通知 */ TOAST, /** * 获取图片验证码 */ CaptchaCode } /** * ClassName: Enum ui_statu. <br/> * UI状态枚举类<br/> * date: 2014-12-3 10:52:52 <br/> * * @author Lien */ private enum ui_statu { /** * 主菜单 */ DEFAULT, /** * 通过手机重置密码 */ PHONE, /** * 通过邮箱重置密码 */ EMAIL, } /** * The handler. */ Handler handler = new Handler() { public void handleMessage(Message msg) { super.handleMessage(msg); handler_key key = handler_key.values()[msg.what]; switch (key) { case TICK_TIME: secondleft--; if (secondleft <= 0) { timer.cancel(); btnReGetCode.setEnabled(true); btnReGetCode.setText(R.string.forget_password_get_verifycode2); btnReGetCode.setBackgroundResource(R.drawable.button_blue_short); } else { btnReGetCode.setText( secondleft + "" + getResources().getText(R.string.forget_password_get_verifycode3)); } break; case CHANGE_SUCCESS: finish(); break; case TOAST: tvDialog.setText((String) msg.obj); rlDialog.setVisibility(View.VISIBLE); dialog.cancel(); break; case CaptchaCode: XPGWifiSDK.sharedInstance().getCaptchaCode(Configs.APP_SECRET); break; } } }; /* * (non-Javadoc) * * @see * com.gizwits.framework.activity.BaseActivity#onCreate(android.os.Bundle) */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_forget_reset); handler.sendEmptyMessage(handler_key.CaptchaCode.ordinal()); initViews(); initEvents(); } /** * Inits the views. */ private void initViews() { etInputCaptchaCode_farget = (EditText) findViewById(R.id.etInputCaptchaCode_farget); btnReGetCaptchaCode_farget = (Button) findViewById(R.id.btnReGetCaptchaCode_farget); CaptchaCode_Loading = (ProgressBar) findViewById(R.id.CaptchaCode_Loading); // tvDialog = (TextView) findViewById(R.id.tvDialog); etName = (EditText) findViewById(R.id.etName); etInputCode = (EditText) findViewById(R.id.etInputCode); etInputPsw = (EditText) findViewById(R.id.etInputPsw); etInputEmail = (EditText) findViewById(R.id.etInputEmail); btnGetCode = (Button) findViewById(R.id.btnGetCode); btnReGetCode = (Button) findViewById(R.id.btnReGetCode); btnSure = (Button) findViewById(R.id.btnSure); btnSureEmail = (Button) findViewById(R.id.btnSureEmail); btnPhoneReset = (Button) findViewById(R.id.btnPhoneReset); btnEmailReset = (Button) findViewById(R.id.btnEmailReset); llInputMenu = (LinearLayout) findViewById(R.id.llInputMenu); llInputPhone = (LinearLayout) findViewById(R.id.llInputPhone); rlInputEmail = (RelativeLayout) findViewById(R.id.rlInputEmail); rlDialog = (RelativeLayout) findViewById(R.id.rlDialog); ivBack = (ImageView) findViewById(R.id.ivBack); tbPswFlag = (ToggleButton) findViewById(R.id.tbPswFlag); toogleUI(ui_statu.DEFAULT); dialog = new ProgressDialog(this); dialog.setMessage("处理中,请稍候..."); MyInputFilter filter = new MyInputFilter(); etInputPsw.setFilters(new InputFilter[] { filter }); } /** * Inits the events. */ private void initEvents() { btnReGetCaptchaCode_farget.setOnClickListener(this); // rlDialog.setOnClickListener(this); btnGetCode.setOnClickListener(this); btnReGetCode.setOnClickListener(this); btnSureEmail.setOnClickListener(this); btnSure.setOnClickListener(this); btnPhoneReset.setOnClickListener(this); btnEmailReset.setOnClickListener(this); // tvPhoneSwitch.setOnClickListener(this); ivBack.setOnClickListener(this); tbPswFlag.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { etInputPsw.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); } else { etInputPsw.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); } } }); } /* * (non-Javadoc) * * @see android.view.View.OnClickListener#onClick(android.view.View) */ @Override public void onClick(View v) { switch (v.getId()) { // case R.id.btnGetCode: // String name = etName.getText().toString().trim(); // if(StringUtils.isEmpty(name)||name.length() != 11) // ToastUtils.showShort(this, "请输入正确的账号。"); // // sendVerifyCode(name); // break; case R.id.btnReGetCode: if (!NetworkUtils.isNetworkConnected(this)) { ToastUtils.showShort(this, "网络未连接"); return; } String phone2 = etName.getText().toString().trim(); if (StringUtils.isEmpty(phone2) || phone2.length() != 11) { ToastUtils.showShort(this, "请输入正确的手机号码。"); return; } if (etInputCaptchaCode_farget.getText().toString().isEmpty()) { ToastUtils.showShort(this, "请输入图片验证码。"); return; } sendVerifyCode(phone2); break; case R.id.btnSure: if (!NetworkUtils.isNetworkConnected(this)) { ToastUtils.showShort(this, "网络未连接"); return; } doChangePsw(); break; case R.id.ivBack: onBackPressed(); break; case R.id.btnSureEmail: if (!NetworkUtils.isNetworkConnected(this)) { ToastUtils.showShort(this, "网络未连接"); return; } String email = etInputEmail.getText().toString().trim(); if (StringUtils.isEmpty(email) || !email.contains("@")) { ToastUtils.showShort(this, "请输入正确的账号。"); return; } getEmail(email); break; case R.id.btnPhoneReset: toogleUI(ui_statu.PHONE); break; case R.id.btnEmailReset: toogleUI(ui_statu.EMAIL); break; case R.id.rlDialog: rlDialog.setVisibility(View.GONE); break; case R.id.btnReGetCaptchaCode_farget: handler.sendEmptyMessage(handler_key.CaptchaCode.ordinal()); break; } } @Override public void onBackPressed() { if (rlDialog.getVisibility() == View.VISIBLE) { rlDialog.setVisibility(View.GONE); return; } switch (statuNow) { case DEFAULT: finish(); break; case PHONE: case EMAIL: toogleUI(ui_statu.DEFAULT); break; } } /** * Toogle ui. * * @param statu * the statu */ private void toogleUI(ui_statu statu) { statuNow = statu; switch (statu) { case DEFAULT: llInputMenu.setVisibility(View.VISIBLE); llInputPhone.setVisibility(View.GONE); rlInputEmail.setVisibility(View.GONE); etInputCode.setText(""); etInputEmail.setText(""); etInputPsw.setText(""); etName.setText(""); break; case PHONE: llInputMenu.setVisibility(View.GONE); llInputPhone.setVisibility(View.VISIBLE); rlInputEmail.setVisibility(View.GONE); break; case EMAIL: llInputMenu.setVisibility(View.GONE); llInputPhone.setVisibility(View.GONE); rlInputEmail.setVisibility(View.VISIBLE); break; } } /** * Gets the email. * * @param email * the email * @return the email */ private void getEmail(String email) { mCenter.cChangePassworfByEmail(email); dialog.show(); } /** * 执行手机号重置密码操作 */ private void doChangePsw() { String phone = etName.getText().toString().trim(); String code = etInputCode.getText().toString().trim(); String password = etInputPsw.getText().toString(); if (phone.length() != 11) { Toast.makeText(this, "电话号码格式不正确", Toast.LENGTH_SHORT).show(); return; } if (code.length() == 0) { Toast.makeText(this, "请输入验证码", Toast.LENGTH_SHORT).show(); return; } if (password.contains(" ")) { Toast.makeText(this, "密码不能有空格", Toast.LENGTH_SHORT).show(); return; } if (password.length() < 6 || password.length() > 16) { Toast.makeText(this, "密码长度应为6~16", Toast.LENGTH_SHORT).show(); return; } mCenter.cChangeUserPasswordWithCode(phone, code, password); dialog.show(); } /** * 发送验证码 * * @param phone * the phone */ private void sendVerifyCode(final String phone) { String CaptchaCode = etInputCaptchaCode_farget.getText().toString(); dialog.show(); btnReGetCode.setEnabled(false); btnReGetCode.setBackgroundResource(R.drawable.button_gray_short); secondleft = 60; timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { // 倒计时通知 handler.sendEmptyMessage(handler_key.TICK_TIME.ordinal()); } }, 1000, 1000); // 发送请求验证码指令 // mCenter.cRequestSendVerifyCode(phone); // 发送请求验证码指令 Log.i("AppTest", tokenString + ", " + captchaidString + ", " + CaptchaCode + ", " + phone); mCenter.cRequestSendVerifyCode(tokenString, captchaidString, CaptchaCode, phone); } /** * 图片验证码回调 */ private String tokenString, captchaidString, captcthishaURL_String; protected void didGetCaptchaCode(int result, java.lang.String errorMessage, java.lang.String token, java.lang.String captchaId, java.lang.String captcthishaURL) { Log.e("AppTest", "图片验证码回调" + result + ", " + errorMessage + ", " + token + ", " + captchaId + ", " + captcthishaURL); tokenString = token; captchaidString = captchaId; captcthishaURL_String = captcthishaURL; new load_image().execute(captcthishaURL_String); } class load_image extends AsyncTask<String, Void, Drawable> { /** * 加载网络图片 * * @param url * @return */ private Drawable LoadImageFromWebOperations(String url) { InputStream is = null; Drawable d = null; try { is = (InputStream) new URL(url).getContent(); d = Drawable.createFromStream(is, "src name"); return d; } catch (Exception e) { return null; } } @Override protected Drawable doInBackground(String... params) { Drawable drawable = LoadImageFromWebOperations(params[0]); return drawable; } @Override protected void onPostExecute(Drawable result) { super.onPostExecute(result); ivGetCaptchaCode_farget = (ImageView) findViewById(R.id.ivGetCaptchaCode_farget); ivGetCaptchaCode_farget.setImageDrawable(result); CaptchaCode_Loading.setVisibility(View.GONE); ivGetCaptchaCode_farget.setVisibility(View.VISIBLE); } } protected void didRequestSendPhoneSMSCode(int result, java.lang.String errorMessage) { Log.e("AppTest", result + ", " + errorMessage); if (result == 0) {// 发送成功 Message msg = new Message(); msg.what = handler_key.TOAST.ordinal(); msg.obj = "Send Succeessful"; handler.sendMessage(msg); } else {// 发送失败 Message msg = new Message(); msg.what = handler_key.TOAST.ordinal(); msg.obj = errorMessage; handler.sendMessage(msg); handler.sendEmptyMessage(handler_key.CaptchaCode.ordinal()); } } /* * (non-Javadoc) * * @see * com.gizwits.framework.activity.BaseActivity#didRequestSendVerifyCode(int, * java.lang.String) */ /* * protected void didRequestSendVerifyCode(int error, String errorMessage) { * Log.i("error message ", error + " " + errorMessage); if (error == 0) {// * 发送成功 Message msg = new Message(); msg.what = handler_key.TOAST.ordinal(); * msg.obj = "发送成功"; handler.sendMessage(msg); } else {// 发送失败 Message msg = * new Message(); msg.what = handler_key.TOAST.ordinal(); msg.obj = * errorMessage; handler.sendMessage(msg); } } */ /* * (non-Javadoc) * * @see * com.gizwits.framework.activity.BaseActivity#didChangeUserPassword(int, * java.lang.String) */ @Override protected void didChangeUserPassword(int error, String errorMessage) { if (error == 0) {// 修改成功 Message msg = new Message(); msg.what = handler_key.TOAST.ordinal(); if (statuNow == ui_statu.EMAIL) { Drawable img = getResources().getDrawable(R.drawable.slib_tick); img.setBounds(0, 0, img.getMinimumWidth(), img.getMinimumHeight()); tvDialog.setCompoundDrawables(img, null, null, null); msg.obj = "已发送至您的邮箱,\n请登录邮箱查收!"; } else { msg.obj = "设置成功"; } handler.sendMessage(msg); handler.sendEmptyMessageDelayed(handler_key.CHANGE_SUCCESS.ordinal(), 2000); } else {// 修改失败 Message msg = new Message(); msg.what = handler_key.TOAST.ordinal(); msg.obj = errorMessage; handler.sendMessage(msg); } super.didChangeUserPassword(error, errorMessage); } }