分享组件使用记录

应用中经常使用到分享组件,当然,很多第三方都提供了社交分享,像ShareSDK、友盟都有很好的集成。

今天记录一下集成的细节:

①无论分享到哪个平台,都需要到这个平台注册相应的应用。

②以分享到微信、朋友圈、微博为例:

/**
 *
 */
public class Constant {

	// 微信
	public static final String AppID = "wx9117e18be87a2aca";
	public static final String AppSecret = "1ed5744aa7258808567873a2aa764409";

	// 这里是sina开发的appkey 交大移动图书馆
	public static final String APP_KEY = "2253710460";
	public static final String REDIRECT_URL = "http://blog.csdn.net/leokelly001";
	public static final String SCOPE = "email,direct_messages_read,direct_messages_write,"
			+ "friendships_groups_read,friendships_groups_write,statuses_to_me_read,"
			+ "follow_app_official_microblog," + "invitation_write";// 应用申请的高级权限

}

share2weibo.java

package com.leo.xjtulib.scanbook.common;

import java.io.File;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.widget.Toast;

import com.leo.xjtulib.R;
import com.sina.weibo.sdk.api.ImageObject;
import com.sina.weibo.sdk.api.TextObject;
import com.sina.weibo.sdk.api.WebpageObject;
import com.sina.weibo.sdk.api.WeiboMultiMessage;
import com.sina.weibo.sdk.api.share.BaseResponse;
import com.sina.weibo.sdk.api.share.IWeiboHandler;
import com.sina.weibo.sdk.api.share.IWeiboShareAPI;
import com.sina.weibo.sdk.api.share.SendMultiMessageToWeiboRequest;
import com.sina.weibo.sdk.api.share.WeiboShareSDK;
import com.sina.weibo.sdk.constant.WBConstants;
import com.sina.weibo.sdk.utils.Utility;

/**
 *
 */
public class Share2Weibo extends Activity implements IWeiboHandler.Response {

	private IWeiboShareAPI mWeiboShareAPI;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		String name = getIntent().getStringExtra("name");
		String url = getIntent().getStringExtra("url");
		String picurl = getIntent().getStringExtra("picurl");
		String score = getIntent().getStringExtra("score");

		System.out.println("-------start1-------");
		mWeiboShareAPI = WeiboShareSDK.createWeiboAPI(this, Constant.APP_KEY);
		mWeiboShareAPI.registerApp();
		System.out.println("-------start2-------");
		sendMultiMessage(score, name, url, picurl);
	}

	private TextObject getTextObj(String score) {
		TextObject textObject = new TextObject();
		textObject.text = "我在@交大移动图书馆  发现了一本不错的书,豆瓣评分:" + score + "分,快来看看吧";
		return textObject;
	}

	private WebpageObject getWebpageObj(String name, String url) {
		WebpageObject mediaObject = new WebpageObject();
		mediaObject.identify = Utility.generateGUID();
		mediaObject.title = name;
		mediaObject.description = name;
		mediaObject.setThumbImage(BitmapFactory.decodeResource(getResources(),
				R.drawable.ic_launcher));
		if (url.equals(""))
			url = "http://book.douban.com";
		mediaObject.actionUrl = url;
		mediaObject.defaultText = "";
		return mediaObject;
	}

	private ImageObject getImageObj(String picurl) {
		ImageObject imageObject = new ImageObject();

		String tempPath = FileUtils.getCachePath() + "/temp.jpg";
		File f = new File(tempPath);
		if (f.exists()) {
			Bitmap thumb = BitmapFactory.decodeFile(tempPath);
			imageObject.setImageObject(thumb);
		} else {
			Bitmap thumb = BitmapFactory.decodeResource(getResources(),
					R.drawable.ic_launcher);
			imageObject.setImageObject(thumb);
		}
		return imageObject;
	}

	private void sendMultiMessage(String score, String name, String url,
			String picurl) {
		WeiboMultiMessage weiboMessage = new WeiboMultiMessage();// 初始化微博的分享消息
		// System.out.println("----------初始化微博的分享消息--------");
		weiboMessage.textObject = getTextObj(score);
		weiboMessage.imageObject = getImageObj(picurl);
		weiboMessage.mediaObject = getWebpageObj(name, url);

		SendMultiMessageToWeiboRequest request = new SendMultiMessageToWeiboRequest();
		request.transaction = String.valueOf(System.currentTimeMillis());
		request.multiMessage = weiboMessage;
		mWeiboShareAPI.sendRequest(request);
		// System.out.println("----------结束微博的分享消息--------");
	}

	@Override
	protected void onNewIntent(Intent intent) {
		super.onNewIntent(intent);
		mWeiboShareAPI.handleWeiboResponse(intent, this);
	}

	@Override
	public void onResponse(BaseResponse baseResp) {
		System.out.println("------onResponse--------");
		switch (baseResp.errCode) {
		case WBConstants.ErrorCode.ERR_OK:
			Toast.makeText(this, "分享成功", Toast.LENGTH_LONG).show();
			finish();
			break;
		case WBConstants.ErrorCode.ERR_CANCEL:
			Toast.makeText(this, "取消分享", Toast.LENGTH_LONG).show();
			finish();
			break;
		case WBConstants.ErrorCode.ERR_FAIL:
			Toast.makeText(this, "分享失败", Toast.LENGTH_LONG).show();
			finish();
			break;
		default:
			finish();
			break;

		}
	}

}

share2weixin.java

package com.leo.xjtulib.scanbook.common;

import java.io.File;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;

import com.leo.xjtulib.R;
import com.tencent.mm.sdk.openapi.IWXAPI;
import com.tencent.mm.sdk.openapi.SendMessageToWX;
import com.tencent.mm.sdk.openapi.WXAPIFactory;
import com.tencent.mm.sdk.openapi.WXMediaMessage;
import com.tencent.mm.sdk.openapi.WXWebpageObject;
import com.tencent.mm.sdk.platformtools.Util;

/**
 *
 */
public class Share2Weixin extends Activity {

	private IWXAPI WXAPI;

	private static final int TIMELINE = 1;
	private static final int FRIEND = 2;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		final String name = getIntent().getStringExtra("name");
		final String url = getIntent().getStringExtra("url");
		final String score = getIntent().getStringExtra("score");
		final int type = getIntent().getIntExtra("type", 1);
		share(Share2Weixin.this, type, name, score, url);
	}

	public void share(Context context, int type, String name, String score,
			String url) {
		WXAPI = WXAPIFactory.createWXAPI(context, Constant.AppID);
		WXAPI.registerApp(Constant.AppID);

		WXWebpageObject webpage = new WXWebpageObject();
		if (url.equals(""))
			url = "http://book.douban.com";
		webpage.webpageUrl = url;
		WXMediaMessage msg = new WXMediaMessage(webpage);
		if (type == TIMELINE) {
			msg.title = "我在@交大移动图书馆 发现了一本不错的书,《" + name + "》豆瓣评分:" + score
					+ "分";
			msg.description = name;
		} else {
			msg.title = name;
			msg.description = "我在@交大移动图书馆  发现了一本不错的书,《" + name + "》豆瓣评分:"
					+ score + "分";
		}
		String tempPath = FileUtils.getCachePath() + "/temp.jpg";
		File f = new File(tempPath);
		if (f.exists()) {
			Bitmap thumb = BitmapFactory.decodeFile(tempPath);
			msg.thumbData = Util.bmpToByteArray(thumb, true);
		} else {
			Bitmap thumb = BitmapFactory.decodeResource(getResources(),
					R.drawable.ic_launcher);
			msg.thumbData = Util.bmpToByteArray(thumb, true);
		}
		SendMessageToWX.Req req = new SendMessageToWX.Req();
		req.transaction = "";
		req.message = msg;
		req.scene = type == TIMELINE ? SendMessageToWX.Req.WXSceneTimeline
				: SendMessageToWX.Req.WXSceneSession;
		WXAPI.sendReq(req);
		finish();
	}

}

在应用中启动activity

	Intent intent = new Intent(
												BookViewActivity_scanbook.this,
												Share2Weibo.class);
										intent.putExtra("url", mBook.getUrl());
										intent.putExtra("score",
												mBook.getRate() + "");
										intent.putExtra("picurl",
												mBook.getBitmap());
										intent.putExtra("name",
												mBook.getTitle());
										startActivity(intent);

在xml中注册

<pre name="code" class="html"><activity
            android:name="com.leo.xjtulib.scanbook.common.Share2Weibo"
            android:configChanges="keyboardHidden|orientation"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.leo.xjtulib.scanbook.common.Share2Weixin"
            android:configChanges="keyboardHidden|orientation"
            android:screenOrientation="portrait" >
        </activity>

用到的jar包下载:http://download.csdn.net/detail/leokelly001/8693485

时间: 2024-12-19 05:44:37

分享组件使用记录的相关文章

百度分享组件使用爬坑

最近在做公司一个项目需要用到百度分享的功能,苦中有一页是一个列表页,需要针对每一行做一个分享功能! 就像如下这种类似的. 于是查看百度分享组件的文挡,查看文挡,得知文挡分享的使用范例如下: 1 <div class="bdsharebuttonbox" data-tag="share_1"> 2 <a class="bds_mshare" data-cmd="mshare"></a> 3 &

百度分享组件分享事件捕捉

百度分享组件是一款非常方便的网页分享工具,只是,如果要在使用分享功能的同时,记录分享的信息,那么就需要捕捉点击分享链接时执行分享的事件. 在网络上面搜索了一下,发现没有这方面的资料,就自己努力实现了一下.目前已经可以完美实现.不说了,看下面代码: <!-- Baidu Button BEGIN --> <div id="bdshare" class="bdshare_t bds_tools get-codes-bdshare bdsharebuttonbox

Android应用开发-小巫CSDN博客客户端之集成友盟社会化分享组件

Android应用开发-小巫CSDN博客客户端之集成友盟社会化分享组件 上一篇博客给大家介绍了如何分析网页并且使用jsoup这个库对html代码进行解析,本篇博客继续给大家介绍如何集成友盟社会化组件,如何使用SDK提供的API轻松实现多平台的社会化分享,官网的文档和Demo看起来很头疼的有木有,小巫在集成这个社会化的组件也有点烦躁,所以也需要各位耐心看下面的博文把友盟社会化组件集成到你的应用中去.为什么要选择友盟呢,这里也是答应了小喵的,要帮忙集成他们的服务,所以也顺带帮他们写一篇这样的博文,千

Android第三期 - sharesdk社会化分享组件

网站分享比较简单的一句js就可以了,但是手机就没有这么简单了,要有点小复杂,刚学Android两个月了,也再用第三方的Android开发组件,现在介绍给大家sharesdk.直接上代码!! 第一步:下载ShareSDK 官网 http://share.sharesdk.cn/Download 第二步:集成ShareSDK 进入ShareSDK解压目录,打开"Share SDK for Android"目录,可以找到"QuickIntegrater.jar",这个就是

自己封装的一个JS分享组件

因为工作的需求之前也封装过一个JS分享插件,集成了我们公司常用的几个分享平台. 但是总感觉之前的结构上很不理想,样式,行为揉成一起,心里想的做的完美,实际上总是很多的偏差,所以这次我对其进行了改版. 这次的核心就是:JS只负责事件+结构,也就是把功能实现出来,具体的外观样式,则使用者自己进行定义. 以下是新版分享插件的代码: 1 (function(root){ 2 'use strict'; 3 function share(params){ 4 5 this.params = params;

积分分享组件——友推

app 的分享传播是否大同小异?尤其是游戏类应用,分享送金币.送水晶,邀请好友送极品神宠……传播渠道也无非是各类社交网站——QQ 空间.人人网.微信.微博. 据统计,中国移动应用市场 Top100 的 app 有 46% 涉及社交元素,在 Top1000 中,这个比例上升至 55%.社会化分享组件已经逐渐成为 app 开发的标准,而组件本身也在标准化——然而这个过程也存在问题.涉及社交元素,并不代表社交元素有意义:含有社会化分享组件,不代表用户会将 app 分享出去.事实上,除了游戏类及新闻资讯

wordpress和普通网页如何使用百度分享组件

百度分享组件是什么?摘自百度百科: 百度分享是一个提供网页地址收藏.分享及发送的WEB2.0按钮工具,网站的浏览者可以方便的分享到人人网.分享到开心网.分享到QQ空间.分享到新浪微博等一系列SNS站点. 其实就是大家比较熟悉的组件: 上百度分享可以定制自己想要的效果,定制过程网上比较多,在这就不写了,分享下我定制的代码 1 <div class="bdsharebuttonbox"> 2 <a href="#" class="bds_mo

social-share,社会化分享组件之jquery版

social-share,诚如其简洁所述"支持微信(二维码).微博.Github.Google++.LinkedIn.Twitter.Facebook.RSS-, 支持四种大小设置",够简洁,够漂亮.之前使用的"百度分享"组件,却发现可恶的植入了后台广告,页面刷新一次,广告就加载一次,让人生厌.今天有幸发现这款轻量级的social-share,真让人爱不释手,所以借此机会推广给更多需要的人. 原生的social-share(可通过harttle/social-sha

如何使用友盟 Cocos2d-x 分享组件实现 Android/iOS 分享功能

Cocos2d-x作为一款优秀的跨平台游戏引擎,已经被越来越多的开发者使用,而在游戏中使用分享组件能够有效的提供用户粘性,通过分享回流来提高APP安装量,但是目前市面上能够在Cocos2d-x环境下使用的分享插件并不多,开发者们只能自己对原生分享SDK进行封装来实现,前一段时间友盟推出Cocos2d-x分享组件,能够帮助开发者快速集成.友盟也把组件的源码放在GitHub上,有好的想法也可以直接在GitHub上修改(PS.在GitHub上提bug可以获得友盟的小奖品),同样也可以对源码进行学习,对