package com.qianfeng.gl4study.snssdk.activity;
import android.app.ActionBar;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.Toast;
import cn.sharesdk.framework.Platform;
import cn.sharesdk.framework.PlatformActionListener;
import cn.sharesdk.framework.PlatformDb;
import cn.sharesdk.framework.ShareSDK;
import cn.sharesdk.framework.utils.UIHandler;
import cn.sharesdk.kaixin.KaiXin;
import cn.sharesdk.renren.Renren;
import cn.sharesdk.sina.weibo.SinaWeibo;
import cn.sharesdk.tencent.qq.QQ;
import cn.sharesdk.tencent.weibo.TencentWeibo;
import cn.sharesdk.wechat.friends.Wechat;
import com.qianfeng.gl4study.snssdk.R;
import java.util.HashMap;
/**
* Created with IntelliJ IDEA.
* I'm glad to share my knowledge with you all.
* User:Gaolei
* Date:2015/3/17
* Email:pdsfgl@live.com
*/
public class LoginActivity extends Activity implements PlatformActionListener, Handler.Callback, View.OnClickListener {
private CheckBox boxProtocol;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
//设置隐藏ActionBar隐藏标题,图标,上界面的title栏
ActionBar actionBar = getActionBar();
if(actionBar!=null) {
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowHomeEnabled(false);
actionBar.hide();
}
ImageView imageWeixin = (ImageView) findViewById(R.id.iv_login_activity_weixin);
imageWeixin.setOnClickListener(this);
ImageView imageQQ = (ImageView) findViewById(R.id.iv_login_activity_qq);
imageQQ.setOnClickListener(this);
ImageView imageSina = (ImageView) findViewById(R.id.iv_login_activity_sina);
imageSina.setOnClickListener(this);
ImageView imageTencent = (ImageView) findViewById(R.id.iv_login_activity_tencent);
imageTencent.setOnClickListener(this);
ImageView imageRenren = (ImageView) findViewById(R.id.iv_login_activity_renren);
imageRenren.setOnClickListener(this);
ImageView imageKaixin = (ImageView) findViewById(R.id.iv_login_activity_kaixin);
imageKaixin.setOnClickListener(this);
boxProtocol = (CheckBox) findViewById(R.id.cb_login_activity_protocol);
}
@Override
public void onClick(View v) {
if(boxProtocol.isChecked()){ //选择接受协议才行
// 这个方法必须调用,初始化ShareSDK
ShareSDK.initSDK(this);
switch (v.getId()){
case R.id.iv_login_activity_weixin:
authorize(new Wechat(this));
break;
case R.id.iv_login_activity_qq:
authorize(new QQ(this));
break;
case R.id.iv_login_activity_sina:
authorize(new SinaWeibo(this));
break;
case R.id.iv_login_activity_tencent:
authorize(new TencentWeibo(this));
break;
case R.id.iv_login_activity_renren:
authorize(new Renren(this));
break;
case R.id.iv_login_activity_kaixin:
authorize(new KaiXin(this));
break;
}
}else {
Toast.makeText(this,"请选择接受协议。",Toast.LENGTH_LONG).show();
}
}
/**
* @param plat 希望用那个平台登录,这个地方就传递那个平台的对象
*/
private void authorize(Platform plat) {
if (plat == null) {
// 如果没有指定平台,那么现在强制选择新浪微博
plat = new SinaWeibo(this);
}
//判断指定平台是否已经完成授权
// 没有授权的时候,进行授权操作 最终会执行 showUser() 这个方法
// 作用就是授权并且获取用户信息
if(plat.isValid()) {
String userId = plat.getDb().getUserId();
if (userId != null) {
// 用于发送注册/登陆成功的消息
UIHandler.sendEmptyMessage(1, this);
return;
}
}
// 用于检测用户在登录时操作的状态。
// 当用户授权成功,会进行回调,回调内部会传递一些用户的信息
plat.setPlatformActionListener(this);
// true不使用SSO授权,false使用SSO授权
plat.SSOSetting(true);
//获取用户资料
plat.showUser(null);
}
/**
* 如果用户信息取到了,那么会发送消息到这个方法。
* @param msg
* @return
*/
@Override
public boolean handleMessage(Message msg) {
return false;
}
//////// 授权认证的时候,回调的方法
/**
* 授权成功,可以获取用户信息
* @param platform
* @param i
* @param hashMap
*/
@Override
public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) {
// 获取哪一个平台的登录授权信息
String name = platform.getName();
// 获取特定平台下面的用户数据库
PlatformDb db = platform.getDb();
// 授权的用户名称
String userName = db.getUserName();
String userId = db.getUserId();
SharedPreferences sharedPreferences = getSharedPreferences("config", MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.putString("name",db.getUserName());
edit.putString("userId",db.getUserId());
edit.apply();
Log.d("Login", name +" ->" + userName+"->"+db.getUserIcon()+"->"+db.getUserId());
Intent intent = new Intent(this, AuthorActivity.class);
intent.putExtra("userId",userId);
startActivity(intent);
}
/**
* 授权出错
* @param platform
* @param i
* @param throwable
*/
@Override
public void onError(Platform platform, int i, Throwable throwable) {
Toast.makeText(this,"用户登录失败,请重试。",Toast.LENGTH_LONG).show();
}
/**
* 用户取消了授权
* @param platform
* @param i
*/
@Override
public void onCancel(Platform platform, int i) {
Toast.makeText(this,"取消授权成功。",Toast.LENGTH_LONG).show();
}
}