package com.elbbbird.android.socialsdk.share; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Gravity; import android.view.View; import com.elbbbird.android.socialsdk.R; import com.elbbbird.android.socialsdk.SocialSDK; import com.elbbbird.android.socialsdk.model.SocialInfo; import com.elbbbird.android.socialsdk.model.SocialShareScene; import com.elbbbird.android.socialsdk.otto.BusProvider; import com.elbbbird.android.socialsdk.otto.ShareBusEvent; import com.elbbbird.android.socialsdk.view.ShareButton; import com.sina.weibo.sdk.api.share.BaseResponse; import com.sina.weibo.sdk.api.share.IWeiboHandler; import com.sina.weibo.sdk.constant.WBConstants; import com.tencent.connect.common.Constants; /** * 一键社会化分享 * Created by zhanghailong-ms on 2015/11/23. */ public class SocialShareActivity extends Activity implements IWeiboHandler.Response { private SocialInfo info; private SocialShareScene scene; private ShareButton sbWechat; private ShareButton sbWeChatTimeline; private ShareButton sbWeibo; private ShareButton sbQQ; private ShareButton sbQZone; private ShareButton sbMore; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.es_activity_social_share); getWindow().setGravity(Gravity.BOTTOM); info = (SocialInfo) getIntent().getExtras().getSerializable("info"); scene = (SocialShareScene) getIntent().getExtras().getSerializable("scene"); initViews(); } private void initViews() { sbWechat = (ShareButton) findViewById(R.id.social_share_sb_wechat); sbWechat.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { scene.setType(SocialShareScene.SHARE_TYPE_WECHAT); SocialSDK.shareToWeChat(SocialShareActivity.this, info.getWechatAppId(), scene); } }); sbWeChatTimeline = (ShareButton) findViewById(R.id.social_share_sb_wechat_timeline); sbWeChatTimeline.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SocialSDK.shareToWeChatTimeline(SocialShareActivity.this, info.getWechatAppId(), scene); scene.setType(SocialShareScene.SHARE_TYPE_WECHAT_TIMELINE); } }); sbWeibo = (ShareButton) findViewById(R.id.social_share_sb_weibo); sbWeibo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { scene.setType(SocialShareScene.SHARE_TYPE_WEIBO); SocialSDK.shareToWeibo(SocialShareActivity.this, info.getWeiboAppKey(), scene); } }); sbQQ = (ShareButton) findViewById(R.id.social_share_sb_qq); sbQQ.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { scene.setType(SocialShareScene.SHARE_TYPE_QQ); SocialSDK.shareToQQ(SocialShareActivity.this, info.getQqAppId(), scene); } }); sbQZone = (ShareButton) findViewById(R.id.social_share_sb_qzone); sbQZone.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { scene.setType(SocialShareScene.SHARE_TYPE_QZONE); SocialSDK.shareToQZone(SocialShareActivity.this, info.getQqAppId(), scene); } }); sbMore = (ShareButton) findViewById(R.id.social_share_sb_more); sbMore.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { scene.setType(SocialShareScene.SHARE_TYPE_DEFAULT); Intent share = new Intent(android.content.Intent.ACTION_SEND); share.setType("text/plain"); share.putExtra(Intent.EXTRA_TEXT, scene.getTitle() + "\n\r" + scene.getUrl()); share.putExtra(Intent.EXTRA_TITLE, scene.getTitle()); share.putExtra(Intent.EXTRA_SUBJECT, scene.getDesc()); startActivity(share); } }); } @Override public void finish() { super.finish(); overridePendingTransition(0, R.anim.es_snack_out); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); if (scene.getType() == SocialShareScene.SHARE_TYPE_WEIBO) { SocialSDK.shareToWeiboCallback(intent, this); finish(); } } @Override public void onResponse(BaseResponse baseResponse) { switch (baseResponse.errCode) { case WBConstants.ErrorCode.ERR_OK: BusProvider.getInstance().post(new ShareBusEvent(ShareBusEvent.TYPE_SUCCESS, scene.getType(), scene.getId())); break; case WBConstants.ErrorCode.ERR_CANCEL: BusProvider.getInstance().post(new ShareBusEvent(ShareBusEvent.TYPE_CANCEL, scene.getType())); break; case WBConstants.ErrorCode.ERR_FAIL: BusProvider.getInstance().post(new ShareBusEvent(ShareBusEvent.TYPE_FAILURE, scene.getType(), new Exception("WBConstants.ErrorCode.ERR_FAIL: " + baseResponse.errMsg))); break; } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == Constants.REQUEST_QZONE_SHARE || requestCode == Constants.REQUEST_QQ_SHARE) { SocialSDK.shareToQCallback(requestCode, resultCode, data); finish(); } } @Override protected void onRestart() { super.onRestart(); if (scene.getType() == SocialShareScene.SHARE_TYPE_WECHAT || scene.getType() == SocialShareScene.SHARE_TYPE_WECHAT_TIMELINE) { finish(); } } }