ShareSDK分享

集成步奏看官网介绍    下面是集成demo

源码:http://download.csdn.net/detail/lm_zp/9594675

这里讲自定义每个分享的监听

/**
 * 分享界面
 * SharedActivity.java
 * Car273
 * 
 * Created by 
 * Copyright (c) 1998-2014 273.cn. All rights reserved.
 */

package com.car273.activity;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler.Callback;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
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;

public class SharedActivity extends Activity implements OnClickListener,
		PlatformActionListener, Callback {

	/** 退出分享按钮 */
	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 LinearLayout linearLayout_allShareButton;
	/** 分享的标题部分 */
	private String share_title;
	/** 分享的文字内容部分 */
	private String share_text;
	/** 分享的图片部分 */
	private String share_image;
	/** 分享的网址部分 */
	private String share_url;
	/** 分享数据的集合体 */
	private HashMap<String, Object> map;
	/** 分享图片数据 */
	private Drawable drawable = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		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() {
		// 初始化sdk分享资源
		ShareSDK.initSDK(this);

		// 初始化要属相的内容
		share_title = "度娘好深的沟";
		share_text = "度娘在哪里,请点击这里好么?";
		share_image = "http://www.cctime.com/upLoadFile/2012/1/18/2012118101653355.jpg";
		share_url = "http://image.baidu.com/i?ct=503316480&z=0&tn=baiduimagedetail&ipn=d&cl=2&cm=1&sc=0&lm=-1&fr=ala2&pn=0&rn=1&di=0&ln=24&word=%B6%C8%C4%EF&objurl=http%3A%2F%2Fimage1%2Enbd%2Ecom%2Ecn%2Fuploads%2Farticles%2Fthumbnails%2F4454%2FQQ%5F%5F%5F%5F%5F%5F20120110102334%2Ex%5Flarge%2Ejpg#pn1&-1&di0&objURLhttp%3A%2F%2Fwww.cctime.com%2FupLoadFile%2F2012%2F1%2F18%2F2012118101653355.jpg&fromURLippr_z2C%24qAzdH3FAzdH3Fooo_z%26e3Bvvpt4j_z%26e3Bv54AzdH3Fip4sAzdH3Fda8d-8-8bAzdH3Fda8d88b8a8mc0dbb8_z%26e3Bip4&W400&H600&T0&S84&TPjpg";

		map = new HashMap<String, Object>();

	}

	/**
	 * @组件初始化
	 */
	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);
		linearLayout_allShareButton = (LinearLayout) findViewById(R.id.LinearLayout_allShareButton);
	}

	/**
	 * @组件添加监听
	 */
	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);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see android.view.View.OnClickListener#onClick(android.view.View)
	 */
	@Override
	public void onClick(View v) {
		// 清空之前可能存在的分项数据
		if (map.size() != 0) {
			map.clear();
		}
		switch (v.getId()) {
		// 取消
		case R.id.share_cancel:
			SharedActivity.this.finish();
			break;
		// 分享到微信朋友圈
		case R.id.linearLayout_ciclefriend:
			share_CircleFriend();
			break;
		// 分享到QQ空间
		case R.id.linearLayout_qzone:
			share_Qzone();
			break;
		// 分享到微信好友
		case R.id.linearLayout_weixin:
			share_WxFriend();
			break;
		// 分享到QQ好友
		case R.id.LinearLayout_qqfriend:
			share_QQFriend();
			break;
		// 分享到短信
		case R.id.LinearLayout_shortmessage:
			share_ShortMessage();
			break;
		// 分享到新浪微博
		case R.id.LinearLayout_sinaweibo:
			share_SinaWeibo();
			break;

		default:
			break;
		}
	}

	/**
	 * 分享到朋友圈
	 */
	private void share_CircleFriend() {
		Platform circle = ShareSDK.getPlatform(this, WechatMoments.NAME);
		if (!circle.isValid()) {
			InfoMessage.showMessage(this, "分享失败,请先安装微信");
			return;
		}
		map.put("AppId", ShareConfig.APPID_CIRCLE_FRIEND);
		map.put("AppSecret", ShareConfig.APPSECRET_CIRCLE_FRIEND);
		map.put("Enable", ShareConfig.ENABLE_CIRCLE_FRIEND);
		map.put("BypassApproval", ShareConfig.BYPASSAPPROVAL_CIRCLE_FRIEND);

		ShareSDK.setPlatformDevInfo(WechatMoments.NAME, map);
		ShareSDK.initSDK(this, ShareConfig.APPKEY);

		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.setImageData(null);
		sp.setImageUrl(share_image);
		sp.setImagePath("");
		sp.setUrl(share_url);

		circle.setPlatformActionListener(this); // 设置分享事件回调
		// 执行图文分享
		circle.share(sp);
	}

	/**
	 * 分享到微信好友
	 */
	private void share_WxFriend() {
		Platform circle = ShareSDK.getPlatform(this, Wechat.NAME);
		if (!circle.isValid()) {
			InfoMessage.showMessage(this, "分享失败,请先安装微信");
			return;
		}
		map.put("AppId", ShareConfig.APPID_WXFRIEND);
		map.put("Enable", ShareConfig.ENABLE_WXFRIEND);
		map.put("BypassApproval", ShareConfig.BYPASSAPPROVAL_WXFRIEND);

		ShareSDK.setPlatformDevInfo(Wechat.NAME, map);
		ShareSDK.initSDK(this, ShareConfig.APPKEY);

		ShareParams sp = new ShareParams();
		sp.setShareType(Platform.SHARE_WEBPAGE);// 一定要设置分享属性
		sp.setTitle(share_title);
		sp.setText(share_text);
		sp.setImageData(null);
		sp.setImageUrl(share_image);
		sp.setImagePath("");
		sp.setUrl(share_url);

		circle.setPlatformActionListener(this); // 设置分享事件回调
		// 执行图文分享
		circle.share(sp);
	}

	/**
	 * 分享到QQ空间
	 */
	private void share_Qzone() {

		map.put("AppId", ShareConfig.APPID_QZONE);
		map.put("AppKey", ShareConfig.APPKEY_QZONE);
		map.put("ShareByAppClient", ShareConfig.SHAREBYAPPCLIENT_QZONE);
		map.put("Enable", ShareConfig.ENABLE_QZONE);
		map.put("BypassApproval", ShareConfig.BYPASSAPPROVAL_QZONE);

		ShareSDK.setPlatformDevInfo(QZone.NAME, map);
		ShareSDK.initSDK(this, ShareConfig.APPKEY);

		cn.sharesdk.tencent.qzone.QZone.ShareParams sp = new cn.sharesdk.tencent.qzone.QZone.ShareParams();
		sp.setShareType(Platform.SHARE_WEBPAGE);// 一定要设置分享属性
		sp.setTitle(share_title);
		sp.setText(share_text);
		sp.setTitleUrl(share_url);
		sp.setImageUrl(share_image);
		sp.setImagePath("");
		sp.setSite("273业管");
		sp.setSite("273业管");

		Platform qzone = ShareSDK.getPlatform(this, QZone.NAME);
		qzone.setPlatformActionListener(this); // 设置分享事件回调
		// 执行图文分享
		qzone.share(sp);
	}

	/**
	 * 分享到QQ好友
	 */
	private void share_QQFriend() {
		Platform circle = ShareSDK.getPlatform(this, QQ.NAME);
		if (!circle.isValid()) {
			InfoMessage.showMessage(this, "分享失败,请先安装QQ");
			return;
		}

		map.put("AppId", ShareConfig.APPID_QQFRIEND);
		map.put("AppKey", ShareConfig.APPKEY_QQFRIEND);
		map.put("Enable", ShareConfig.ENABLE_QQFRIEND);

		ShareSDK.setPlatformDevInfo(QQ.NAME, map);
		ShareSDK.initSDK(this, ShareConfig.APPKEY);

		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_url);
		sp.setImagePath("");

		circle.setPlatformActionListener(this); // 设置分享事件回调
		// 执行图文分享
		circle.share(sp);
	}

	/**
	 * 分享到短信
	 */
	private void share_ShortMessage() {

		ShareSDK.setPlatformDevInfo(ShortMessage.NAME, map);
		ShareSDK.initSDK(this, ShareConfig.APPKEY);

		cn.sharesdk.system.text.ShortMessage.ShareParams sp = new cn.sharesdk.system.text.ShortMessage.ShareParams();
		sp.setAddress("");
		sp.setText(share_text + share_url);

		Platform circle = ShareSDK.getPlatform(this, ShortMessage.NAME);
		circle.setPlatformActionListener(this); // 设置分享事件回调
		// 执行图文分享
		circle.share(sp);
	}

	/**
	 * 分享到新浪微博
	 */
	private void share_SinaWeibo() {
		map.put("AppKey", ShareConfig.APPKEY_SINA_WEIBO);
		map.put("AppSecret", ShareConfig.APPSECRET_SINA_WEIBO);
		map.put("RedirectUrl", ShareConfig.REDIRECTURL_SINA_WEIBO);
		map.put("ShareByAppClient", ShareConfig.SHAREBYAPPCLIENT_SINA_WEIBO);
		map.put("Enable", ShareConfig.ENABLE_SINA_WEIBO);
		ShareSDK.setPlatformDevInfo(SinaWeibo.NAME, map);
		ShareSDK.initSDK(this, ShareConfig.APPKEY);

		cn.sharesdk.sina.weibo.SinaWeibo.ShareParams sp = new cn.sharesdk.sina.weibo.SinaWeibo.ShareParams();
		sp.setShareType(Platform.SHARE_WEBPAGE);// 一定要设置分享属性
		sp.setText(share_text + share_url);
		sp.setImageUrl(share_image);
		sp.setImagePath("");

		Platform weibo = ShareSDK.getPlatform(this, SinaWeibo.NAME);
		weibo.setPlatformActionListener(this); // 设置分享事件回调
		// 执行图文分享
		weibo.share(sp);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see android.app.Activity#onDestroy()
	 */
	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		// 取消分享菜单的统计
		ShareSDK.logDemoEvent(2, null);
		// 释放资源空间
		ShareSDK.stopSDK(this);
		super.onDestroy();
	}

	public void onComplete(Platform plat, int action,
			HashMap<String, Object> res) {

		Message msg = new Message();
		msg.arg1 = 1;
		msg.arg2 = action;
		msg.obj = plat;
		UIHandler.sendMessage(msg, this);
	}

	public void onCancel(Platform palt, int action) {
		Message msg = new Message();
		msg.arg1 = 3;
		msg.arg2 = action;
		msg.obj = palt;
		UIHandler.sendMessage(msg, this);
	}

	public void onError(Platform palt, int action, Throwable t) {
		t.printStackTrace();
		Message msg = new Message();
		msg.arg1 = 2;
		msg.arg2 = action;
		UIHandler.sendMessage(msg, this);
	}

	public boolean handleMessage(Message msg) {
		String text = actionToString(msg.arg2);

		switch (msg.arg1) {
		case 1:
			// 成功
			text = "分享成功";
			InfoMessage.showMessage(this, text);
			SharedActivity.this.finish();

			break;
		case 2:
			// 失败
			text = "分享失败";
			break;
		case 3:
			// 取消
			text = "分享已取消";
			break;
		}
		InfoMessage.showMessage(this, text);
		return false;
	}

	/** 将action转换为String */
	public static String actionToString(int action) {
		switch (action) {
		case Platform.ACTION_AUTHORIZING:
			return "ACTION_AUTHORIZING";
		case Platform.ACTION_GETTING_FRIEND_LIST:
			return "ACTION_GETTING_FRIEND_LIST";
		case Platform.ACTION_FOLLOWING_USER:
			return "ACTION_FOLLOWING_USER";
		case Platform.ACTION_SENDING_DIRECT_MESSAGE:
			return "ACTION_SENDING_DIRECT_MESSAGE";
		case Platform.ACTION_TIMELINE:
			return "ACTION_TIMELINE";
		case Platform.ACTION_USER_INFOR:
			return "ACTION_USER_INFOR";
		case Platform.ACTION_SHARE:
			return "ACTION_SHARE";
		default: {
			return "UNKNOWN";
		}
		}
	}

	/**
	 * 从服务器取图片
	 * 
	 * @param url
	 * @return
	 */
	public static Drawable getHttpDrawable(String url) {
		URL myFileUrl = null;
		Bitmap bitmap = null;
		try {
			myFileUrl = new URL(url);
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}
		try {
			HttpURLConnection conn = (HttpURLConnection) myFileUrl
					.openConnection();
			conn.setConnectTimeout(0);
			conn.setDoInput(true);
			conn.connect();
			InputStream is = conn.getInputStream();
			bitmap = BitmapFactory.decodeStream(is);
			is.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return new BitmapDrawable(bitmap);
	}
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值