package com.pan.simplepicture.activity; import java.util.Map; import java.util.Set; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.RelativeLayout; import android.widget.Toast; import com.google.gson.Gson; import com.pan.simplepicture.ConstantValue; import com.pan.simplepicture.R; import com.pan.simplepicture.been.User; import com.pan.simplepicture.utils.SharedPreferencesUtils; import com.umeng.socialize.bean.SHARE_MEDIA; import com.umeng.socialize.controller.UMServiceFactory; 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.SinaSsoHandler; import com.umeng.socialize.sso.UMQQSsoHandler; import com.umeng.socialize.sso.UMSsoHandler; import com.umeng.socialize.utils.Log; /** * 登录 * @author pan * */ public class LoginActivity extends Activity implements OnClickListener { UMSocialService mController = UMServiceFactory .getUMSocialService("com.umeng.login"); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initUMLogin(); setContentView(R.layout.activity_login); initView(); } private void initView() { RelativeLayout rl_qq = (RelativeLayout) findViewById(R.id.rl_qq); RelativeLayout rl_sina = (RelativeLayout) findViewById(R.id.rl_sina); rl_qq.setOnClickListener(this); rl_sina.setOnClickListener(this); } private void initUMLogin() { // TODO Auto-generated method stub mController.getConfig().setSsoHandler(new SinaSsoHandler()); // 参数1为当前Activity, 参数2为开发者在QQ互联申请的APP ID,参数3为开发者在QQ互联申请的APP kEY. UMQQSsoHandler qqSsoHandler = new UMQQSsoHandler(this, ConstantValue.QQ_APPID, ConstantValue.QQ_APPKEY); qqSsoHandler.addToSocialSDK(); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); /** 使用SSO授权必须添加如下代码 */ UMSsoHandler ssoHandler = mController.getConfig().getSsoHandler( requestCode); if (ssoHandler != null) { ssoHandler.authorizeCallBack(requestCode, resultCode, data); } } private void getSinaInfo() { mController.getPlatformInfo(this, SHARE_MEDIA.SINA, new UMDataListener() { @Override public void onStart() { } @Override public void onComplete(int status, Map<String, Object> info) { if (status == 200 && info != null) { ConstantValue.user = new User(); ConstantValue.user.screen_name = (String) info .get("screen_name"); ConstantValue.user.location = (String) info .get("location"); ConstantValue.user.gender = info.get("gender") .toString().equals("1") ? "男" : "女"; ConstantValue.user.profile_image_url = (String) info .get("profile_image_url"); Gson gson = new Gson(); SharedPreferencesUtils.saveString( LoginActivity.this, "user", gson.toJson(ConstantValue.user)); finish(); overridePendingTransition(R.anim.new_dync_no, R.anim.new_dync_out_to_left); } else { Log.d("TestData", "发生错误:" + status); } } }); } private void loginBySina() { mController.doOauthVerify(this, SHARE_MEDIA.SINA, new UMAuthListener() { @Override public void onError(SocializeException e, SHARE_MEDIA platform) { } @Override public void onComplete(Bundle value, SHARE_MEDIA platform) { if (value != null && !TextUtils.isEmpty(value.getString("uid"))) { getSinaInfo(); } else { Toast.makeText(LoginActivity.this, "授权失败", Toast.LENGTH_SHORT).show(); } } @Override public void onCancel(SHARE_MEDIA platform) { } @Override public void onStart(SHARE_MEDIA platform) { } }); } private void loginByQQ() { mController.doOauthVerify(LoginActivity.this, SHARE_MEDIA.QQ, new UMAuthListener() { @Override public void onStart(SHARE_MEDIA platform) { } @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) { getQQInfo(); } @Override public void onCancel(SHARE_MEDIA platform) { Toast.makeText(LoginActivity.this, "授权取消", Toast.LENGTH_SHORT).show(); } }); } private void getQQInfo() { // 获取相关授权信息 mController.getPlatformInfo(LoginActivity.this, SHARE_MEDIA.QQ, new UMDataListener() { @Override public void onStart() { } @Override public void onComplete(int status, Map<String, Object> info) { if (status == 200 && info != null) { ConstantValue.user = new User(); ConstantValue.user.screen_name = (String) info .get("screen_name"); ConstantValue.user.location = (String) info .get("province") + " " + (String) info.get("city"); ConstantValue.user.gender = (String) info .get("gender"); ConstantValue.user.profile_image_url = (String) info .get("profile_image_url"); Gson gson = new Gson(); SharedPreferencesUtils.saveString( LoginActivity.this, "user", gson.toJson(ConstantValue.user)); finish(); overridePendingTransition(R.anim.new_dync_no, R.anim.new_dync_out_to_left); } else { Log.d("TestData", "发生错误:" + status); } } }); } @Override public void onClick(View arg0) { switch (arg0.getId()) { case R.id.rl_qq: loginByQQ(); break; case R.id.rl_sina: loginBySina(); break; default: break; } } }