Android实现QQ分享及注意事项

摘要:
title=Android_API调用说明&=45038#1.13_.E5.88.86.E4.BA.AB.E6.B6.88.E6.81.AF.E5.88.B0QQ.EF.BC.88.E6.97.A0.E9.9C.80QQ.E7.99.BB.E5.BD.95.EF.BC.89二、实现代码publicclassQQShareManager{/***链接*/publicstaticfinalintQQ_SHARE_WAY_WEBPAGE=3;/***QQ*/publicstaticfinalintQQ_SHARE_TYPE_TALK=1;/***QQ空间*/publicstaticfinalintQQ_SHARE_TYPE_ZONE=2;/***分享成功*/publicstaticfinalintCALLBACK_CODE_SUCCESS=0;/***取消分享*/publicstaticfinalintCALLBACK_CODE_CANCEL=1;/***拒绝访问*/publicstaticfinalintCALLBACK_CODE_DENY=2;/***未知*/publicstaticfinalintCALLBACK_CODE_UNKNOWN=3;privatestaticStringappId;privateTencentmTencent;privateQQShareqqShare;privateQzoneShareqzoneShare;privateQQShareResponseqqShareResponse;publicvoidregistShare{//初始化数据if{appId=QQShareUtil.getQQAppId;}//初始化分享代码if(appId!

一、获取APPID和帮助文档

在前面我介绍了关于Android中微信分享的文章《Android实现微信分享及注意事项》这一篇文章来看看关于QQ分享。

可以参看新手引导和接入说明:http://wiki.open.qq.com/wiki/移动应用接入wiki索引

分享相关文档说明:http://wiki.open.qq.com/index.php?title=Android_API调用说明&=45038#1.13_.E5.88.86.E4.BA.AB.E6.B6.88.E6.81.AF.E5.88.B0QQ.EF.BC.88.E6.97.A0.E9.9C.80QQ.E7.99.BB.E5.BD.95.EF.BC.89

二、实现代码(转载请说明出处:http://blog.csdn.net/dawanganban

public class QQShareManager {
	/**
	 * 链接
	 */
	public static final int QQ_SHARE_WAY_WEBPAGE = 3;
	/**
	 * QQ
	 */
	public static final int QQ_SHARE_TYPE_TALK = 1;  
	/**
	 * QQ空间
	 */
	public static final int QQ_SHARE_TYPE_ZONE = 2;
	/**
	 * 分享成功
	 */
	public static final int CALLBACK_CODE_SUCCESS = 0;
	/**
	 * 取消分享
	 */
	public static final int CALLBACK_CODE_CANCEL = 1;
	/**
	 * 拒绝访问
	 */
	public static final int CALLBACK_CODE_DENY = 2;
	/**
	 * 未知
	 */
	public static final int CALLBACK_CODE_UNKNOWN = 3;
	
	private static String appId;
	private Tencent mTencent;
	private QQShare qqShare;
	private QzoneShare qzoneShare;
	private QQShareResponse qqShareResponse;
	
	public void registShare(Context context){
		//初始化数据
		if(appId == null){
			appId = QQShareUtil.getQQAppId(context);
		}
		//初始化分享代码
		if(appId != null && (qqShare == null || qzoneShare == null)){
			mTencent = Tencent.createInstance(appId, context);
			qqShare = new QQShare(context, mTencent.getQQToken());
			qzoneShare = new QzoneShare(context, mTencent.getQQToken());
		}
	}
	
	/**
	 * 分享qq和空间
	 * @param shareContent 分享内容
	 * @param shareType  选择类型(qq、空间)
	 */
	public void shareByQQ(Activity activity, ShareContent shareContent, int shareType){
			shareWebPage(activity, shareType, shareContent);
	}
	
	private void shareWebPage(Activity activity, int shareType, ShareContent shareContent){
		Bundle params = new Bundle();
		if(shareType == QQ_SHARE_TYPE_ZONE){
			shareWebPageQzone(activity, shareContent, params);
		}else{
			shareWebPageQQ(activity, shareContent, params);
		}
	}

	private void shareWebPageQQ(Activity activity, ShareContent shareContent, Bundle params) {
		params.putString(QQShare.SHARE_TO_QQ_TITLE, shareContent.getTitle());
		params.putString(QQShare.SHARE_TO_QQ_SUMMARY, shareContent.getContent());
		params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE,
				QQShare.SHARE_TO_QQ_TYPE_DEFAULT);
		params.putString(QQShare.SHARE_TO_QQ_TARGET_URL, shareContent.getURL());
		params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, shareContent.getPicUrl());
		
		doShareToQQ(activity, params, iUiListener);
	}

	private void shareWebPageQzone(Activity activity, ShareContent shareContent, Bundle params) {
		params.putString(QzoneShare.SHARE_TO_QQ_TITLE, shareContent.getTitle());
		params.putString(QzoneShare.SHARE_TO_QQ_SUMMARY, shareContent.getContent());
		params.putInt(QzoneShare.SHARE_TO_QZONE_KEY_TYPE, 
				QzoneShare.SHARE_TO_QZONE_TYPE_IMAGE_TEXT);
		params.putString(QzoneShare.SHARE_TO_QQ_TARGET_URL, shareContent.getURL());
		ArrayList<String> imageUrls = new ArrayList<String>();
		imageUrls.add(shareContent.getPicUrl());
		params.putStringArrayList(QzoneShare.SHARE_TO_QQ_IMAGE_URL, imageUrls);
		//params.putString(QzoneShare.SHARE_TO_QQ_IMAGE_URL, shareContent.getPicUrl());
		
		doShareToQzone(activity, params, iUiListener);
	}
	
	private void doShareToQQ(final Activity activity, final Bundle params, final IUiListener iUiListener) {
		new Thread(new Runnable() {
			@Override
			public void run() {
				if(qqShare != null){
					qqShare.shareToQQ(activity, params, iUiListener);
				}
			}
		}).start();
	}
	
	private void doShareToQzone(final Activity activity, final Bundle params, final IUiListener iUiListener) {
		new Thread(new Runnable() {
			@Override
			public void run() {
				if(qzoneShare != null){
					qzoneShare.shareToQzone(activity, params, iUiListener);
				}
			}
		}).start();
	}
	
	private final IUiListener iUiListener = new IUiListener() {
		@Override
		public void onCancel() {
			sendRespCode(CALLBACK_CODE_CANCEL);
		}

		@Override
		public void onComplete(Object response) {
			sendRespCode(CALLBACK_CODE_SUCCESS);
		}

		@Override
		public void onError(UiError e) {
			sendRespCode(CALLBACK_CODE_DENY);
		}
		
		private void sendRespCode(int code) {
			if(qqShareResponse != null){
				qqShareResponse.respCode(code);
			}
		}
	};
	
	public interface QQShareResponse{
		/**
		 * 分享结果
		 * @param code 结果码
		 */
		public void respCode(int code);
	}
	
	/**
	 * 注册结果回馈
	 * @param qqShareResponse
	 */
	public void setOnQQShareResponse(QQShareResponse qqShareResponse){
		this.qqShareResponse = qqShareResponse;
	}
	
	/**
	 * 欢迎关注-阳光小强-http://blog.csdn.net/dawanganban
	 * @author lixiaoqiang
	 *
	 */
	private abstract class ShareContent{
		protected abstract int getShareWay();
		protected abstract String getContent();
		protected abstract String getTitle();
		protected abstract String getURL();
		protected abstract String getPicUrl();
	}
	
	/**
	 * 设置分享链接的内容
	 * @author Administrator
	 *
	 */
	public class ShareContentWebpage extends ShareContent{
		private String title;
		private String content;
		private String url;
		private String picUrl;
		public ShareContentWebpage(String title, String content, 
				String url, String picUrl){
			this.title = title;
			this.content = content;
			this.url = url;
			this.picUrl = picUrl;
		}

		@Override
		protected String getContent() {
			return content;
		}

		@Override
		protected String getTitle() {
			return title;
		}

		@Override
		protected String getURL() {
			return url;
		}

		@Override
		protected int getShareWay() {
			return QQ_SHARE_WAY_WEBPAGE;
		}

		@Override
		protected String getPicUrl() {
			return picUrl;
		}
	}
}

上面实现了文字分享、图片分享和链接分享接口,希望对正在学习Android的朋友和需要的朋友有所帮助。

另外部分细节问题和微信分享几乎一样,可以参考《Android实现微信分享及注意事项

免责声明:文章转载自《Android实现QQ分享及注意事项》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇uniapp @change事件传多个参数django admin字段设置大全下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C#编写QQ接口软件——QQ协议篇

转自 http://www.iqidi.com/Articles/2009-04-19%23329.htm 1、找寻支持QQ HTTP协议的服务器 大家也许会被一些假像所迷惑,也许会认为QQ的HTTP服务器是基于80口进行通信的(如: 218.17.209.23:80),其实不然,正真基于HTTP的服务器应该是:http://tqq.tencent.co...

[C# 开发技巧]实现属于自己的截图工具

[C# 开发技巧]实现属于自己的截图工具 一、引言  之前一直都是写一些C#基础知识的内容的,然而有些初学者可能看完了这些基础知识之后,会有这样一个疑惑的——我了解了这些基础知识之后,我想做一些工具怎么还是不会做的呢?那些基础知识到底有什么用的了?然而我刚开始写这个系列的初衷主要是我想系统地去研究下C#各个阶段的特性的,及时有些特性我知道它是怎么用的,但是...

评论一下现有几个开源IM框架(Msn/QQ/Fetion/Gtalk...)

转载:http://www.cnblogs.com/zc22/archive/2010/05/30/1747300.html 前言 ---------------- 这阵子,在集成通讯框架, 由于不想自己造轮子,因此参考了现在一些开源的IM框架,结果是。。。。。 让我有点不爽,导致开发的时间不多,但是debug的时间浪费的太多了! 现在让我慢慢...

主干(trunk)、分支(branch )、标记(tag)

主干(trunk)、分支(branch )、标记(tag) 用法示例 + 图解  以svn为例,git的master相当于trunk,dev分支相当于branches ----------------------------------------------------------------------------------------------...

discuz 论坛配置 QQ/163 网易邮箱

  转https://blog.csdn.net/xchenhao/article/details/95592577 步骤 在 discuz 后台的 站长 - 邮件设置 里按如下配置: SMTP 服务器固定:163 网易填 ssl://smtp.163.com ,QQ 邮箱则填 ssl://smtp.qq.com 端口:465 验证:勾选(配置完成后,...

腾讯QQ的历史

http://www.agenow.com/bbs/DispText.aspx?id=1385106 OICQ:   大家都习惯性的认为OICQ是马化腾先生自己动手研发的,可在腾讯内部的网友之间又传来另一个版本的QQ故事。“你看马化腾哪点象做程序的?”这是当时有一个资深的网友对我说的话。一句无心的话,却勾起了我的好奇心,“这QQ到底是谁做的?”打探之下我...