package com.todayinfo.ui.activity; import java.util.Map; import java.util.Set; import android.annotation.SuppressLint; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.jinghua.todayinformation.R; import com.todayinfo.model.User; import com.todayinfo.utils.CharCheckUtil; import com.umeng.socialize.bean.SHARE_MEDIA; import com.umeng.socialize.controller.UMSocialService; import com.umeng.socialize.controller.listener.SocializeListeners.UMAuthListener; import com.umeng.socialize.controller.listener.SocializeListeners.UMDataListener; import com.umeng.socialize.exception.SocializeException; import com.umeng.socialize.sso.UMSsoHandler; public class LoginActivity extends SuperActivity implements OnClickListener { private View view; private EditText phone; private EditText vCode; private TextView getVCode; private TextView login; private ImageView delete; // 输入的删除按钮 private ImageView check; private boolean flag = true; private int countSeconds = 60; // 倒数秒数 @SuppressLint("HandlerLeak") private Handler mCountHanlder = new Handler() { @Override public void handleMessage(Message msg) { if (countSeconds > 0) { --countSeconds; getVCode.setText("发送验证码" + "(" + countSeconds + ")"); mCountHanlder.sendEmptyMessageDelayed(0, 1000); } else { countSeconds = 60; getVCode.setText("发送验证码"); } } }; // 开始倒计时 private void startCountBack() { runOnUiThread(new Runnable() { @Override public void run() { getVCode.setText(countSeconds + ""); mCountHanlder.sendEmptyMessage(0); } }); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); view = View.inflate(mContext, R.layout.activity_login, null); setContentView(view); phone = (EditText) view.findViewById(R.id.input_phone); vCode = (EditText) view.findViewById(R.id.code); login = (TextView) view.findViewById(R.id.login); getVCode = (TextView) view.findViewById(R.id.get_code); ImageView exit = (ImageView) view.findViewById(R.id.exit); delete = (ImageView) view.findViewById(R.id.input_delete); exit.setOnClickListener(this); delete.setOnClickListener(this); getVCode.setOnClickListener(this); login.setOnClickListener(this); delete.setVisibility(View.GONE); phone.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { if (s.toString().length() > 0) { delete.setVisibility(View.VISIBLE); } else { delete.setVisibility(View.GONE); } } }); check = (ImageView) this.findViewById(R.id.check); check.setOnClickListener(this); this.findViewById(R.id.user_tx).setOnClickListener(this); this.findViewById(R.id.user_ll).setOnClickListener(this); this.findViewById(R.id.login_qq).setOnClickListener(this); this.findViewById(R.id.login_weibo).setOnClickListener(this); } @Override public void retry() { } @Override public void netError() { } @Override public void pwdError() { } @Override public void onResume() { super.onResume(); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.get_code: // 获取手机号发送请求向手机发送验证码 hideSoftInput(this, phone); if (countSeconds != 60) { showToast("您的验证码已发送!"); return; } String phoneStr = phone.getText().toString(); if (CharCheckUtil.isPhoneNum(phoneStr)) { showProgressDialog(); showToast("发送成功"); startCountBack(); } else { showToast("输入的手机号码有误!"); } break; case R.id.login: hideSoftInput(this, vCode); if ( LoginCheck() ){ User user = new User(); user.name = "资讯爱好者"; user.uId = "111842201"; user.gender = 1; user.birthday = System.currentTimeMillis()/1000; user.phone = phone.getText().toString(); Toast.makeText(mContext, "您好," + user.name, Toast.LENGTH_SHORT).show(); mUserController.saveUserInfo(user); Intent intent =new Intent(mContext, MyInfoActivity.class); startActivity(intent); finish(); } break; case R.id.exit: finish(); break; case R.id.input_delete: phone.setText(""); delete.setVisibility(View.GONE); break; case R.id.check: //是否勾选用户协议 if ( flag ) { flag = false; login.setEnabled(false); login.setBackgroundResource(R.color.C8C8C8); check.setImageResource(R.drawable.check_2); } else { flag = true; login.setEnabled(true); login.setBackgroundColor(Color.WHITE); check.setImageResource(R.drawable.check_1); } break; case R.id.user_ll: //用户协议 case R.id.user_tx: Intent intent = new Intent(this, AboutActivity.class); startActivity(intent); break; case R.id.login_qq: //QQ登录 QQLogin(SHARE_MEDIA.QQ); break; case R.id.login_weibo: //微博登录 SinaLogin(SHARE_MEDIA.SINA); break; default: break; } } /** * QQ登录 * @param platform */ private void QQLogin(final SHARE_MEDIA platform) { final UMSocialService mController = mShareUtils.getmController(); mController.doOauthVerify(this, platform, new UMAuthListener() { @Override public void onStart(SHARE_MEDIA platform) { // Toast.makeText(LoginActivity.this, "授权开始", Toast.LENGTH_SHORT).show(); } @Override public void onError(SocializeException e, SHARE_MEDIA platform) { // Toast.makeText(LoginActivity.this, "授权失败", Toast.LENGTH_SHORT).show(); } @Override public void onComplete(Bundle value, SHARE_MEDIA platform) { // Toast.makeText(mContext, "授权完成", Toast.LENGTH_SHORT).show(); String uid = value.getString("uid"); // 获取uid final User qqUser = new User(); qqUser.qqId = uid; if ( !TextUtils.isEmpty(uid) ) { //获取相关授权信息 mController.getPlatformInfo(mContext, platform, new UMDataListener() { @Override public void onStart() { // Toast.makeText(mContext, "获取平台数据开始...", Toast.LENGTH_SHORT).show(); } @Override public void onComplete(int status, Map<String, Object> info) { if(status == 200 && info != null){ StringBuilder sb = new StringBuilder(); Set<String> keys = info.keySet(); for(String key : keys){ sb.append(key+"="+info.get(key).toString()+","); } Log.d("TestData",sb.toString()); qqUser.name = info.get( "screen_name").toString(); if ( info.get( "gender").toString().equals("男") ) { qqUser.gender = 1; } else if ( info.get( "gender").toString().equals("女") ) { qqUser.gender = 2; } else { qqUser.gender = 0; } qqUser.picUrl = info.get("profile_image_url").toString(); qqUser.city = info.get("city").toString(); qqUser.province = info.get("province").toString(); Toast.makeText(mContext, "您好," + qqUser.name, Toast.LENGTH_SHORT).show(); mUserController.saveUserInfo(qqUser); Intent intent =new Intent(mContext, MyInfoActivity.class); startActivity(intent); finish(); }else{ Log.d("TestData","发生错误:"+status); } } }); } } @Override public void onCancel(SHARE_MEDIA platform) { // Toast.makeText(LoginActivity.this, "授权取消", Toast.LENGTH_SHORT).show(); } }); } /** * Sina登录 * @param platform */ private void SinaLogin(final SHARE_MEDIA platform) { final UMSocialService mController = mShareUtils.getmController(); mController.doOauthVerify(this, platform, new UMAuthListener() { @Override public void onStart(SHARE_MEDIA arg0) { // Toast.makeText(LoginActivity.this, "授权开始", Toast.LENGTH_SHORT).show(); } @Override public void onError(SocializeException arg0, SHARE_MEDIA arg1) { // Toast.makeText(LoginActivity.this, "授权失败", Toast.LENGTH_SHORT).show(); } @Override public void onComplete(Bundle value, SHARE_MEDIA platform) { final User sinaUser = new User(); if (value != null && !TextUtils.isEmpty(value.getString("uid"))) { // Toast.makeText(mContext, "授权成功", Toast.LENGTH_SHORT).show(); String uid = value.getString("uid"); // 获取uid sinaUser.sinaId = uid; //获取相关授权信息 mController.getPlatformInfo(mContext, platform, new UMDataListener() { @Override public void onStart() { // Toast.makeText(mContext, "获取平台数据开始...", Toast.LENGTH_SHORT).show(); } @Override public void onComplete(int status, Map<String, Object> info) { if(status == 200 && info != null){ StringBuilder sb = new StringBuilder(); Set<String> keys = info.keySet(); for(String key : keys){ sb.append(key+"="+info.get(key).toString()+"\r\n"); } Log.d("TestData",sb.toString()); sinaUser.name = info.get( "screen_name").toString(); if ( info.get( "gender").toString().equals("1") ) { sinaUser.gender = 1; } else if ( info.get( "gender").toString().equals("2") ) { sinaUser.gender = 2; } else { sinaUser.gender = 0; } sinaUser.picUrl = info.get("profile_image_url").toString(); sinaUser.city = info.get("location").toString(); Toast.makeText(mContext, "您好," + sinaUser.name, Toast.LENGTH_SHORT).show(); mUserController.saveUserInfo(sinaUser); Intent intent =new Intent(mContext, MyInfoActivity.class); startActivity(intent); finish(); }else{ Log.d("TestData","发生错误:"+status); } } }); } else { // Toast.makeText(mContext, "授权失败", Toast.LENGTH_SHORT).show(); } } @Override public void onCancel(SHARE_MEDIA arg0) { // Toast.makeText(LoginActivity.this, "授权失败", Toast.LENGTH_SHORT).show(); } }); } /** * 登录参数校验 * * @param phone * @param pwd * @return false || true */ public boolean LoginCheck() { if (!CharCheckUtil.isPhoneNum(phone.getText().toString())) { showToast("您输入的手机号码有误,请重新输入!"); return false; } if (!CharCheckUtil.isAllDigit(vCode.getText().toString())) { showToast("您输入的验证码有误,请重新输入!"); return false; } return true; } /** * 如果有使用任一平台的SSO授权, 则必须在对应的activity中实现onActivityResult方法, 并添加如下代码 */ @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // 根据requestCode获取对应的SsoHandler UMSsoHandler ssoHandler = mShareUtils.getmController().getConfig().getSsoHandler(resultCode); if (ssoHandler != null) { ssoHandler.authorizeCallBack(requestCode, resultCode, data); } } @Override protected void obtainInfo() { } }