content: /*
   * 官网地站:http://www.mob.com
   * 技术支持QQ: 4006852216
   * 官方微信:ShareSDK   （如果发布新版本的话，我们将会第一时间通过微信将版本更新内容推送给您。如果使用过程中有任何问题，也可以通过微信与我们取得联系，我们将会在24小时内给予回复）
   *
   * Copyright (c) 2013年 mob.com. All rights reserved.
   */
  
  package cn.sharesdk.onekeyshare;
  
  import static com.mob.tools.utils.BitmapHelper.captureView;
  
  import java.util.ArrayList;
  import java.util.HashMap;
  
  import android.content.Context;
  import android.graphics.Bitmap;
  import android.text.TextUtils;
  import android.view.View;
  import android.view.View.OnClickListener;
  import cn.sharesdk.framework.Platform;
  import cn.sharesdk.framework.PlatformActionListener;
  import cn.sharesdk.framework.ShareSDK;
  import com.mob.tools.utils.R;
  
  /**
  * 快捷分享的入口
  * <p>
  * 通过不同的setter设置参数，然后调用{@link #show(Context)}方法启动快捷分享
  */
  public class OnekeyShare {
  	private HashMap<String, Object> params;
  
  	public OnekeyShare() {
  		params = new HashMap<String, Object>();
  		params.put("customers", new ArrayList<CustomerLogo>());
  		params.put("hiddenPlatforms", new HashMap<String, String>());
  	}
  
  	/** address是接收人地址，仅在信息和邮件使用，否则可以不提供 */
  	public void setAddress(String address) {
  		params.put("address", address);
  	}
  
  	/**
  	 * title标题，在印象笔记、邮箱、信息、微信（包括好友、朋友圈和收藏）、
  	 * 易信（包括好友、朋友圈）、人人网和QQ空间使用，否则可以不提供
  	 */
  	public void setTitle(String title) {
  		params.put("title", title);
  	}
  
  	/** titleUrl是标题的网络链接，仅在人人网和QQ空间使用，否则可以不提供 */
  	public void setTitleUrl(String titleUrl) {
  		params.put("titleUrl", titleUrl);
  	}
  
  	/** text是分享文本，所有平台都需要这个字段 */
  	public void setText(String text) {
  		params.put("text", text);
  	}
  
  	/** 获取text字段的值 */
  	public String getText() {
  		return params.containsKey("text") ? String.valueOf(params.get("text")) : null;
  	}
  
  	/** imagePath是本地的图片路径，除Linked-In外的所有平台都支持这个字段 */
  	public void setImagePath(String imagePath) {
  		if(!TextUtils.isEmpty(imagePath))
  			params.put("imagePath", imagePath);
  	}
  
  	/** imageUrl是图片的网络路径，新浪微博、人人网、QQ空间和Linked-In支持此字段 */
  	public void setImageUrl(String imageUrl) {
  		if (!TextUtils.isEmpty(imageUrl))
  			params.put("imageUrl", imageUrl);
  	}
  
  	/** url在微信（包括好友、朋友圈收藏）和易信（包括好友和朋友圈）中使用，否则可以不提供 */
  	public void setUrl(String url) {
  		params.put("url", url);
  	}
  
  	/** filePath是待分享应用程序的本地路劲，仅在微信（易信）好友和Dropbox中使用，否则可以不提供 */
  	public void setFilePath(String filePath) {
  		params.put("filePath", filePath);
  	}
  
  	/** comment是我对这条分享的评论，仅在人人网和QQ空间使用，否则可以不提供 */
  	public void setComment(String comment) {
  		params.put("comment", comment);
  	}
  
  	/** site是分享此内容的网站名称，仅在QQ空间使用，否则可以不提供 */
  	public void setSite(String site) {
  		params.put("site", site);
  	}
  
  	/** siteUrl是分享此内容的网站地址，仅在QQ空间使用，否则可以不提供 */
  	public void setSiteUrl(String siteUrl) {
  		params.put("siteUrl", siteUrl);
  	}
  
  	/** foursquare分享时的地方名 */
  	public void setVenueName(String venueName) {
  		params.put("venueName", venueName);
  	}
  
  	/** foursquare分享时的地方描述 */
  	public void setVenueDescription(String venueDescription) {
  		params.put("venueDescription", venueDescription);
  	}
  
  	/** 分享地纬度，新浪微博、腾讯微博和foursquare支持此字段 */
  	public void setLatitude(float latitude) {
  		params.put("latitude", latitude);
  	}
  
  	/** 分享地经度，新浪微博、腾讯微博和foursquare支持此字段 */
  	public void setLongitude(float longitude) {
  		params.put("longitude", longitude);
  	}
  
  	/** 是否直接分享 */
  	public void setSilent(boolean silent) {
  		params.put("silent", silent);
  	}
  
  	/** 设置编辑页的初始化选中平台 */
  	public void setPlatform(String platform) {
  		params.put("platform", platform);
  	}
  
  	/** 设置KakaoTalk的应用下载地址 */
  	public void setInstallUrl(String installurl) {
  		params.put("installurl", installurl);
  	}
  
  	/** 设置KakaoTalk的应用打开地址 */
  	public void setExecuteUrl(String executeurl) {
  		params.put("executeurl", executeurl);
  	}
  
  	/** 设置微信分享的音乐的地址 */
  	public void setMusicUrl(String musicUrl) {
  		params.put("musicUrl", musicUrl);
  	}
  
  	/** 设置自定义的外部回调 */
  	public void setCallback(PlatformActionListener callback) {
  		params.put("callback", callback);
  	}
  
  	/** 返回操作回调 */
  	public PlatformActionListener getCallback() {
  		return R.forceCast(params.get("callback"));
  	}
  
  	/** 设置用于分享过程中，根据不同平台自定义分享内容的回调 */
  	public void setShareContentCustomizeCallback(ShareContentCustomizeCallback callback) {
  		params.put("customizeCallback", callback);
  	}
  
  	/** 自定义不同平台分享不同内容的回调 */
  	public ShareContentCustomizeCallback getShareContentCustomizeCallback() {
  		return R.forceCast(params.get("customizeCallback"));
  	}
  
  	/** 设置自己图标和点击事件，可以重复调用添加多次 */
  	public void setCustomerLogo(Bitmap logo, String label, OnClickListener ocl) {
  		CustomerLogo cl = new CustomerLogo();
  		cl.logo = logo;
  		cl.label = label;
  		cl.listener = ocl;
  		ArrayList<CustomerLogo> customers = R.forceCast(params.get("customers"));
  		customers.add(cl);
  	}
  
  	/** 设置一个总开关，用于在分享前若需要授权，则禁用sso功能 */
  	public void disableSSOWhenAuthorize() {
  		params.put("disableSSO", true);
  	}
  
  	/** 设置视频网络地址 */
  	public void setVideoUrl(String url) {
  		params.put("url", url);
  		params.put("shareType", Platform.SHARE_VIDEO);
  	}
  
  	/** 设置编辑页面的显示模式为Dialog模式 */
  	@Deprecated
  	public void setDialogMode() {
  		params.put("dialogMode", true);
  	}
  
  	/** 添加一个隐藏的platform */
  	public void addHiddenPlatform(String platform) {
  		HashMap<String, String> hiddenPlatforms = R.forceCast(params.get("hiddenPlatforms"));
  		hiddenPlatforms.put(platform, platform);
  	}
  
  	/** 设置一个将被截图分享的View , surfaceView是截不了图片的*/
  	public void setViewToShare(View viewToShare) {
  		try {
  			Bitmap bm = captureView(viewToShare, viewToShare.getWidth(), viewToShare.getHeight());
  			params.put("viewToShare", bm);
  		} catch (Throwable e) {
  			e.printStackTrace();
  		}
  	}
  
  	/** 腾讯微博分享多张图片 */
  	public void setImageArray(String[] imageArray) {
  		params.put("imageArray", imageArray);
  	}
  
  	/** 设置在执行分享到QQ或QZone的同时，分享相同的内容腾讯微博 */
  	public void setShareToTencentWeiboWhenPerformingQQOrQZoneSharing() {
  		params.put("isShareTencentWeibo", true);
  	}
  
  	/** 设置分享界面的样式，目前只有一种，不需要设置 */
  	public void setTheme(OnekeyShareTheme theme) {
  		params.put("theme", theme.getValue());
  	}
  
  	@SuppressWarnings("unchecked")
  	public void show(Context context) {
  		HashMap<String, Object> shareParamsMap = new HashMap<String, Object>();
  		shareParamsMap.putAll(params);
  
  		ShareSDK.initSDK(context);
  
  		// 打开分享菜单的统计
  		ShareSDK.logDemoEvent(1, null);
  
  		int iTheme = 0;
  		try {
  			iTheme = R.parseInt(String.valueOf(shareParamsMap.remove("theme")));
  		} catch (Throwable t) {}
  		OnekeyShareTheme theme = OnekeyShareTheme.fromValue(iTheme);
  		OnekeyShareThemeImpl themeImpl = theme.getImpl();
  
  		themeImpl.setShareParamsMap(shareParamsMap);
  		themeImpl.setDialogMode(shareParamsMap.containsKey("dialogMode") ? ((Boolean) shareParamsMap.remove("dialogMode")) : false);
  		themeImpl.setSilent(shareParamsMap.containsKey("silent") ? ((Boolean) shareParamsMap.remove("silent")) : false);
  		themeImpl.setCustomerLogos((ArrayList<CustomerLogo>) shareParamsMap.remove("customers"));
  		themeImpl.setHiddenPlatforms((HashMap<String, String>) shareParamsMap.remove("hiddenPlatforms"));
  		themeImpl.setPlatformActionListener((PlatformActionListener) shareParamsMap.remove("callback"));
  		themeImpl.setShareContentCustomizeCallback((ShareContentCustomizeCallback) shareParamsMap.remove("customizeCallback"));
  		if (shareParamsMap.containsKey("disableSSO") ? ((Boolean) shareParamsMap.remove("disableSSO")) : false) {
  			themeImpl.disableSSO();
  		}
  
  		themeImpl.show(context);
  	}
  
  }
  