/**
* 分享界面
* SharedActivity.java
* Car273
*
* Created by 方鹏程 on 2014年4月11日
* Copyright (c) 1998-2014 273.cn. All rights reserved.
*/
package cn.car273.activity;
import java.util.HashMap;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler.Callback;
import android.os.Message;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import cn.car273.R;
import cn.car273.app.ShareConfig;
import cn.car273.util.Utils;
import cn.sharesdk.framework.Platform;
import cn.sharesdk.framework.Platform.ShareParams;
import cn.sharesdk.framework.PlatformActionListener;
import cn.sharesdk.framework.ShareSDK;
import cn.sharesdk.framework.utils.UIHandler;
import cn.sharesdk.sina.weibo.SinaWeibo;
import cn.sharesdk.system.text.ShortMessage;
import cn.sharesdk.tencent.qq.QQ;
import cn.sharesdk.tencent.qzone.QZone;
import cn.sharesdk.wechat.friends.Wechat;
import cn.sharesdk.wechat.moments.WechatMoments;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
public class SharedActivity extends Activity implements OnClickListener, PlatformActionListener,
Callback {
public static String EXTRA_BIG_TITLE = "big_title";
public static String EXTRA_LITTLE_TITLE = "little_title";
public static String EXTRA_CAR_ID="id";
public static String EXTRA_CAR_IMAGE="image";
/** 分享的图片显示 */
private ImageView imageView_share_car;
/** 分享的文字显示 */
private TextView textView_share_car;
/** 退出分享按钮 */
private Button share_cancel;
/** 分享到朋友圈按钮 */
private LinearLayout share_circleFriend;
/** 分享到微信好友按钮 */
private LinearLayout share_wxFriend;
/** 分享到QQ空间按钮 */
private LinearLayout share_qzone;
/** 分享到QQ好友按钮 */
private LinearLayout share_qqFriend;
/** 分享到短信按钮 */
private LinearLayout share_shortMessage;
/** 分享到新浪微博按钮 */
private LinearLayout share_sinaWeibo;
/** 分享的标题部分 */
private String share_title;
/** 分享的文字内容部分 */
private String share_text;
/** 分享的图片部分 */
private String share_image;
/** 分享的网址部分 */
private String share_url;
/** 分享无图标记 */
public static final String NOIMAGE = "noimage";
/** 记录当前分享点击状态 */
private boolean isClick = false;
/** 短信分享按钮是否被点击 */
private boolean isSina = false;
/** 新浪分享等待dilog */
private ProgressDialog dialog;
/**
* 图片显示Options
*/
private DisplayImageOptions mOptions = null;
/** 朋友圈注册数据 */
private HashMap<String, Object> map_circle;
/** 微信好友注册数据 */
private HashMap<String, Object> map_wxFriend;
/** QQ空间注册数据 */
private HashMap<String, Object> map_qzone;
/** QQ好友注册数据 */
private HashMap<String, Object> map_qqFriend;
/** 短信注册数据 */
private HashMap<String, Object> map_shortMessage;
/** 新浪微博注册数据 */
private HashMap<String, Object> map_sina;
/** 朋友圈分享对象 */
private Platform platform_circle;
/** 微信好友分享对象 */
private Platform platform_wxFriend;
/** QQ空间分享对象 */
private Platform platform_qzone;
/** QQ好友分享对象 */
private Platform platform_qqFriend;
/** 短信分享对象 */
private Platform platform_shortMessage;
/** 新浪分享对象 */
private Platform platform_sina;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.share_item_dialog);
initView();
initData();
initAddOnClickListener();
}
/**
* 定义一个函数将dp转换为像素
*
* @param context
* @param dp
* @return
*/
public int Dp2Px(float dp) {
final float scale = getResources().getDisplayMetrics().density;
return (int)(dp * scale / 2);
}
/**
* @数据初始化
*/
private void initData() {
ShareSDK.initSDK(this, ShareConfig.APPKEY);
initRegistInfo();
share_text = getIntent().getStringExtra(EXTRA_LITTLE_TITLE);
share_title = getIntent().getStringExtra(EXTRA_BIG_TITLE);
System.out.println("share_text---->"+share_text);
System.out.println("share_title---->"+share_title);
if (TextUtils.isEmpty(getIntent().getStringExtra(EXTRA_CAR_IMAGE))) {
share_image = "http://sta.273.com.cn/app/mbs/img/mobile_default.png";
} else {
share_image = imageUrl(getIntent().getStringExtra(EXTRA_CAR_IMAGE));
}
System.out.println("share_image---->"+share_image);
share_url ="http://m.273.cn/car/"+getIntent().getStringExtra(EXTRA_CAR_ID)+".html?source=zzshare";
mOptions = new DisplayImageOptions.Builder().showImageOnLoading(R.drawable.no_car)
.showImageForEmptyUri(R.drawable.no_car)
.showImageOnFail(R.drawable.no_car)
.cacheInMemory(true)
.cacheOnDisc(true).build();
ImageLoader.getInstance().displayImage(share_image, imageView_share_car, mOptions, null);
share_image = share_image.replace("110-110", "600-800");
}
private String imageUrl(String imageUrl){
return Utils.formatImgUrl(imageUrl, 512, 0, false);
}
/**
* 初始化各个平台注册信息
*/
private void initRegistInfo() {
map_circle = new HashMap<String, Object>();
map_wxFriend = new HashMap<String, Object>();
map_qzone = new HashMap<String, Object>();
map_qqFriend = new HashMap<String, Object>();
map_shortMessage = new HashMap<String, Object>();
map_sina = new HashMap<String, Object>();
map_circle.put("AppId", ShareConfig.APPID_CIRCLE_FRIEND);
map_circle.put("AppSecret", ShareConfig.APPSECRET_CIRCLE_FRIEND);
map_circle.put("Enable", ShareConfig.ENABLE_CIRCLE_FRIEND);
map_circle.put("BypassApproval", ShareConfig.BYPASSAPPROVAL_CIRCLE_FRIEND);
map_circle.put("ShortLinkConversationEnable", "true");
ShareSDK.setPlatformDevInfo(WechatMoments.NAME, map_circle);
map_wxFriend.put("AppId", ShareConfig.APPID_WXFRIEND);
map_wxFriend.put("Enable", ShareConfig.ENABLE_WXFRIEND);
map_wxFriend.put("BypassApproval", ShareConfig.BYPASSAPPROVAL_WXFRIEND);
map_wxFriend.put("ShortLinkConversationEnable", "true");
ShareSDK.setPlatformDevInfo(Wechat.NAME, map_wxFriend);
map_qzone.put("AppId", ShareConfig.APPID_QZONE);
map_qzone.put("AppKey", ShareConfig.APPKEY_QZONE);
map_qzone.put("ShareByAppClient", ShareConfig.SHAREBYAPPCLIENT_QZONE);
map_qzone.put("Enable", ShareConfig.ENABLE_QZONE);
map_qzone.put("ShortLinkConversationEnable", "true");
ShareSDK.setPlatformDevInfo(QZone.NAME, map_qzone);
map_qqFriend.put("AppId", ShareConfig.APPID_QQFRIEND);
map_qqFriend.put("AppKey", ShareConfig.APPKEY_QQFRIEND);
map_qqFriend.put("Enable", ShareConfig.ENABLE_QQFRIEND);
map_qqFriend.put("ShortLinkConversationEnable", "true");
ShareSDK.setPlatformDevInfo(QQ.NAME, map_qqFriend);
map_shortMessage.put("ShortLinkConversationEnable", "true");
ShareSDK.setPlatformDevInfo(ShortMessage.NAME, map_shortMessage);
map_sina.put("AppKey", ShareConfig.APPKEY_SINA_WEIBO);
map_sina.put("AppSecret", ShareConfig.APPSECRET_SINA_WEIBO);
map_sina.put("RedirectUrl", ShareConfig.REDIRECTURL_SINA_WEIBO);
map_sina.put("ShareByAppClient", ShareConfig.SHAREBYAPPCLIENT_SINA_WEIBO);
map_sina.put("Enable", ShareConfig.ENABLE_SINA_WEIBO);
map_sina.put("ShortLinkConversationEnable", "true");
ShareSDK.setPlatformDevInfo(SinaWeibo.NAME, map_sina);
}
/**
* @组件初始化
*/
private void initView() {
share_cancel = (Button)findViewById(R.id.share_cancel);
share_cancel = (Button)findViewById(R.id.share_cancel);
share_circleFriend = (LinearLayout)findViewById(R.id.linearLayout_ciclefriend);
share_qqFriend = (LinearLayout)findViewById(R.id.LinearLayout_qqfriend);
share_qzone = (LinearLayout)findViewById(R.id.linearLayout_qzone);
share_shortMessage = (LinearLayout)findViewById(R.id.LinearLayout_shortmessage);
share_sinaWeibo = (LinearLayout)findViewById(R.id.LinearLayout_sinaweibo);
share_wxFriend = (LinearLayout)findViewById(R.id.linearLayout_weixin);
dialog = new ProgressDialog(this);
dialog.setMessage(getResources().getString(R.string.loading_please_wait));
dialog.setCancelable(false);
}
/**
* @组件添加监听
*/
private void initAddOnClickListener() {
share_cancel.setOnClickListener(this);
share_circleFriend.setOnClickListener(this);
share_qqFriend.setOnClickListener(this);
share_qzone.setOnClickListener(this);
share_shortMessage.setOnClickListener(this);
share_sinaWeibo.setOnClickListener(this);
share_wxFriend.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.share_cancel) {
SharedActivity.this.finish();
} else {
if (!isClick) {
isClick = true;
switch (v.getId()) {
case R.id.linearLayout_ciclefriend:
share_CircleFriend();
break;
case R.id.linearLayout_qzone:
share_Qzone();
break;
case R.id.linearLayout_weixin:
share_WxFriend();
break;
case R.id.LinearLayout_qqfriend:
share_QQFriend();
break;
case R.id.LinearLayout_shortmessage:
share_ShortMessage();
break;
case R.id.LinearLayout_sinaweibo:
share_SinaWeibo();
break;
}
}
}
}
/**
* 分享到朋友圈
*/
private void share_CircleFriend() {
if (!Utils.isHaveApp("com.tencent.mm", this)) {
Utils.showToast(this, "请先安装微信");
isClick = false;
return;
}
platform_circle = ShareSDK.getPlatform(this, WechatMoments.NAME);
cn.sharesdk.wechat.moments.WechatMoments.ShareParams sp = new cn.sharesdk.wechat.moments.WechatMoments.ShareParams();
sp.setShareType(Platform.SHARE_WEBPAGE);
sp.setTitle(share_title);
sp.setText(share_text);
sp.setImageUrl(share_image);
sp.setImagePath(null);
sp.setUrl(share_url);
platform_circle.setPlatformActionListener(this);
platform_circle.share(sp);
}
/**
* 分享到微信好友
*/
private void share_WxFriend() {
if (!Utils.isHaveApp("com.tencent.mm", this)) {
Utils.showToast(this, "请先安装微信");
isClick = false;
return;
}
platform_wxFriend = ShareSDK.getPlatform(this, Wechat.NAME);
ShareParams sp = new ShareParams();
sp.setShareType(Platform.SHARE_WEBPAGE);
sp.setTitle(share_title);
sp.setText(share_text);
sp.setUrl(share_url);
sp.setImageData(null);
sp.setImageUrl(share_image);
sp.setImagePath(null);
platform_wxFriend.setPlatformActionListener(this);
platform_wxFriend.share(sp);
}
/**
* 分享到QQ空间
*/
private void share_Qzone() {
platform_qzone = ShareSDK.getPlatform(this, QZone.NAME);
cn.sharesdk.tencent.qzone.QZone.ShareParams sp = new cn.sharesdk.tencent.qzone.QZone.ShareParams();
sp.setTitle(share_title);
sp.setText(share_text);
sp.setTitleUrl(share_url);
sp.setImageUrl(share_image);
sp.setSite("273二手车");
sp.setSiteUrl(share_url);
platform_qzone.setPlatformActionListener(this);
platform_qzone.share(sp);
}
/**
* 分享到QQ好友
*/
private void share_QQFriend() {
platform_qqFriend = ShareSDK.getPlatform(this, QQ.NAME);
cn.sharesdk.tencent.qq.QQ.ShareParams sp = new cn.sharesdk.tencent.qq.QQ.ShareParams();
sp.setShareType(Platform.SHARE_WEBPAGE);
sp.setTitle(share_title);
sp.setTitleUrl(share_url);
sp.setText(share_text);
sp.setImageUrl(share_image);
sp.setImagePath(null);
platform_qqFriend.setPlatformActionListener(this);
platform_qqFriend.share(sp);
}
/**
* 分享到短信
*/
private void share_ShortMessage() {
platform_shortMessage = ShareSDK.getPlatform(this, ShortMessage.NAME);
cn.sharesdk.system.text.ShortMessage.ShareParams sp = new cn.sharesdk.system.text.ShortMessage.ShareParams();
sp.setAddress("");
sp.setText(share_text + share_url);
platform_shortMessage.share(sp);
}
/**
* 分享到新浪微博
*/
private void share_SinaWeibo() {
platform_sina = ShareSDK.getPlatform(SinaWeibo.NAME);
System.out.println("platform_sina.isValid()----"+platform_sina.isValid());
if (!platform_sina.isValid()) {
platform_sina.removeAccount();
}
cn.sharesdk.sina.weibo.SinaWeibo.ShareParams sp = new cn.sharesdk.sina.weibo.SinaWeibo.ShareParams();
sp.setShareType(Platform.SHARE_WEBPAGE);
sp.setTitle(share_title);
sp.setText(share_text + share_url);
sp.setUrl(share_url);
sp.setImageUrl(share_image);
sp.setImagePath(null);
platform_sina.setPlatformActionListener(this);
platform_sina.share(sp);
isSina = true;
dialog.show();
}
@Override
protected void onDestroy() {
ShareSDK.stopSDK(this.getBaseContext());
super.onDestroy();
}
public void onComplete(Platform plat, int action, HashMap<String, Object> res) {
if (isSina) {
dialog.dismiss();
}
System.out.println("plat.getName()--->"+plat.getName()+" :"+SinaWeibo.NAME);
if (plat.getName().equals(SinaWeibo.NAME) && !platform_sina.isValid()) {
finish();
} else {
Message msg = new Message();
msg.arg1 = 1;
msg.arg2 = action;
msg.obj = plat;
UIHandler.sendMessage(msg, this);
}
}
public void onCancel(Platform plat, int action) {
if (isSina) {
dialog.dismiss();
}
isSina = false;
Message msg = new Message();
msg.arg1 = 3;
msg.arg2 = action;
msg.obj = plat;
UIHandler.sendMessage(msg, this);
}
public void onError(Platform plat, int action, Throwable t) {
Message msg = new Message();
msg.arg1 = 2;
msg.arg2 = action;
msg.obj = plat;
UIHandler.sendMessage(msg, this);
}
public boolean handleMessage(Message msg) {
isClick = false;
switch (msg.arg1) {
case 1:
Utils.showToast(this.getBaseContext(), "分享成功");
if (isSina) {
isSina = false;
SharedActivity.this.finish();
}
break;
case 2:
Utils.showToast(this.getBaseContext(), "分享失败");
if (isSina) {
isSina = false;
SharedActivity.this.finish();
}
break;
}
return false;
}
@Override
protected void onPause() {
super.onPause();
if (!isSina) {
finish();
}
}
}
转:http://www.cnblogs.com/ws5861/p/3673755.html