package com.suan.weclient.activity; import android.app.Activity; import android.app.Dialog; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.suan.weclient.R; import com.suan.weclient.util.NetworkUtil; import com.suan.weclient.util.SharedPreferenceManager; import com.suan.weclient.util.Util; import com.suan.weclient.util.data.DataManager; import com.suan.weclient.util.data.bean.UserBean; import com.suan.weclient.util.net.DataParser; import com.suan.weclient.util.net.WeChatLoader; import com.suan.weclient.util.net.WeChatLoader.WechatGetUserProfleCallBack; import com.suan.weclient.util.net.WeChatLoader.WechatLoginCallBack; import com.suan.weclient.util.net.WechatManager; import com.umeng.analytics.MobclickAgent; import org.apache.http.Header; import org.apache.http.impl.cookie.RFC2965DomainAttributeHandler; public class LoginActivity extends Activity { private Button loginButton; private EditText userNameEditText, passWordEditText; private static final int INPUT_OK = 0; private static final int INPUT_USER_NAME_PROBLEM = 1; private static final int INPUT_PASSWORD_PROBLEM = 2; private UserBean nowBean; private int jumbState = 0; Dialog loginDialog; /* * * 12:too much time */ /** * Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { /* request no title mode */ requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); setContentView(R.layout.login_layout); initIntent(); initWidget(); } public void onResume() { super.onResume(); MobclickAgent.onResume(this); } public void onPause() { super.onPause(); MobclickAgent.onPause(this); } private void initIntent() { jumbState = SplashActivity.JUMB_VALUE_NONE; Intent getIntent = getIntent(); if (getIntent != null) { Bundle getBundle = getIntent.getExtras(); if (getBundle != null) { jumbState = getBundle .getInt(SplashActivity.JUMB_KEY_ENTER_STATE); } } } private void initWidget() { loginDialog = Util.createLoadingDialog(this, "登录", WechatManager.DIALOG_POP_NO); userNameEditText = (EditText) findViewById(R.id.login_edit_text_user_id); passWordEditText = (EditText) findViewById(R.id.login_edit_text_pass_word); loginButton = (Button) findViewById(R.id.login_button_login); loginButton.setOnClickListener(new loginClickListener()); } private class loginClickListener implements OnClickListener { @Override public void onClick(View v) { // TODO Auto-generated method stub if (NetworkUtil.getNetworkType(getApplicationContext()) != NetworkUtil.NOCONNECTION) { int checkResult = checkInput(); switch (checkResult) { case INPUT_OK: break; case INPUT_USER_NAME_PROBLEM: Toast.makeText(getApplicationContext(), "请输入正确的用户名", Toast.LENGTH_LONG).show(); return; case INPUT_PASSWORD_PROBLEM: Toast.makeText(getApplicationContext(), "请输入密码", Toast.LENGTH_LONG).show(); return; } if (SharedPreferenceManager.containUser( getApplicationContext(), userNameEditText.getText() .toString())) { Toast.makeText(LoginActivity.this, "此账户已经添加,若想要重新添加请先删除该账户", Toast.LENGTH_LONG).show(); } else { if (!Util.isNetConnected(LoginActivity.this)) { loginDialog.dismiss(); loginDialog = Util.createEnsureDialog( new DataManager.DialogSureClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub loginDialog.dismiss(); Intent intent = new Intent(android.provider.Settings.ACTION_SOUND_SETTINGS); startActivity(intent); finish(); } }, true, LoginActivity.this, "网络", "无网络连接,进入设置网络?", true); loginDialog.show(); } else { login(); } } } } } private void login() { loginDialog = Util.createLoadingDialog(this, "登录", WechatManager.DIALOG_POP_NO); loginDialog.show(); WeChatLoader.wechatLogin( new WechatLoginCallBack() { @Override public void onBack(int resultCode, String strResult, Header[] headers) { // TODO Auto-generated method stub switch (resultCode) { case WeChatLoader.WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT: loginDialog.dismiss(); loginDialog = Util.createEnsureDialog( new DataManager.DialogSureClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub loginDialog.dismiss(); login(); } }, false, LoginActivity.this, "连接超时", "连接超时,重试?", true); loginDialog.show(); break; case WeChatLoader.WECHAT_RESULT_MESSAGE_ERROR_OTHER: loginDialog.dismiss(); loginDialog = Util.createEnsureDialog( new DataManager.DialogSureClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub login(); loginDialog.dismiss(); } }, false, LoginActivity.this, "网络", "网络错误,重试?", true); loginDialog.show(); break; case WeChatLoader.WECHAT_RESULT_MESSAGE_OK: try { nowBean = new UserBean(userNameEditText.getText() .toString(), WeChatLoader .getMD5Str(passWordEditText.getText().toString())); DataParser.parseLogin(new DataParser.LoginParseCallBack() { @Override public void onBack(int code, UserBean userBean) { switch (code) { case DataParser.PARSE_SUCCESS: doAfterLogin(); break; case DataParser.PARSE_FAILED: loginDialog.dismiss(); loginDialog = Util.createEnsureDialog( new DataManager.DialogSureClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub loginDialog.dismiss(); } }, false, LoginActivity.this, "错误", "登录失败,请检查账户名和密码", true); loginDialog.show(); break; } } }, strResult, headers, nowBean); } catch (Exception exception) { } break; } } }, userNameEditText.getText().toString(), WeChatLoader .getMD5Str(passWordEditText.getText().toString()), "", "json" ); } private void doAfterLogin() { WeChatLoader.wechatGetUserProfile( new WechatGetUserProfleCallBack() { @Override public void onBack(int resultCode, String strResult, String referer) { // TODO Auto-generated method stub switch (resultCode) { case WeChatLoader.WECHAT_RESULT_MESSAGE_ERROR_OTHER: loginDialog.dismiss(); loginDialog = Util.createEnsureDialog( new DataManager.DialogSureClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub loginDialog.dismiss(); login(); } }, false, LoginActivity.this, "错误", "获取信息失败,重试?", true); loginDialog.show(); break; case WeChatLoader.WECHAT_RESULT_MESSAGE_ERROR_TIMEOUT: loginDialog.dismiss(); loginDialog = Util.createEnsureDialog( new DataManager.DialogSureClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub loginDialog.dismiss(); login(); } }, false, LoginActivity.this, "错误", "获取信息超时,重试?", true); loginDialog.show(); break; case WeChatLoader.WECHAT_RESULT_MESSAGE_OK: try { int getUserProfileState = DataParser .parseUserProfile(strResult, nowBean); switch (getUserProfileState) { case DataParser.GET_USER_PROFILE_SUCCESS: SharedPreferenceManager .insertUser( getApplicationContext(), nowBean); loginDialog.dismiss(); switch (jumbState) { case SplashActivity.JUMB_VALUE_INTENT_TO_LOGIN: Intent jumbIntent = new Intent(); jumbIntent.setClass( LoginActivity.this, MainActivity.class); startActivity(jumbIntent); break; case SplashActivity.JUMB_VALUE_NONE: LoginActivity.this .setResult(RESULT_OK); break; } finish(); break; case DataParser.GET_USER_PROFILE_FAILED: loginDialog.dismiss(); loginDialog = Util .createEnsureDialog( new DataManager.DialogSureClickListener() { @Override public void onClick( View v) { // TODO // Auto-generated // method // stub login(); } }, false, LoginActivity.this, "错误", "登录失败,重试?", true); loginDialog.show(); break; } } catch (Exception exception) { Log.e("get user profile result error", "" + exception); } break; } } }, nowBean ); } private int checkInput() { int result = INPUT_OK; String userName = userNameEditText.getText().toString(); if (userName.length() < 1) { return INPUT_USER_NAME_PROBLEM; } String passWord = passWordEditText.getText().toString(); if (passWord.length() < 1) { return INPUT_PASSWORD_PROBLEM; } return result; } }