一、获取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分享及注意事项的更多相关文章

  1. Android实现微信分享及注意事项

    一.获取帮助文档并下载相关资料 首先打开微信开放平台:https://open.weixin.qq.com/ 如果没有注册,请先注册并上传开发者资料等待审核. 资源中心----移动应用开发----分享 ...

  2. Android 解决qq分享后返回程序出现的Bug

    问题:当我们使用qq分享时,分享成功后选择留在qq,这个时候按home键,回到手机主界面,在点击回到我的app,这个时候会出现界面显示出来了,但是任何事件都不响应,即按钮没反应. 分析:这个时候回到我 ...

  3. Android实现微博分享及其注意事项

    在前面我写了两篇关于QQ和微信的分享(http://blog.csdn.net/dawanganban/article/details/42015249)(http://blog.csdn.net/d ...

  4. Android之第三方平台实现QQ登录和QQ分享

    目前大多数APP都包含了第三方平台的登录,特别是QQ和微信,这篇博客主要讲的是如何实现QQ第三方平台实现QQ登录和分享功能,功能包含: 登录授权登录获取用户信息(昵称,头像,地址等) QQ分享给好友 ...

  5. Android实现截图分享qq,微信

    代码地址如下:http://www.demodashi.com/demo/13292.html 前言 现在很多应用都有截图分享的功能,今天就来讲讲截图分享吧 今天涉及到以下内容: android权限设 ...

  6. android 集成QQ互联 (登录,分享)

    参考:http://blog.csdn.net/syz8742874/article/details/39271117 http://blog.csdn.net/woblog/article/deta ...

  7. Android 微信分享与QQ分享功能

    微信分享与QQ分享功能现在都挺常见的,可以根据一些第三方社会化分功能快速实现,不过多多少少都不怎么纯净,最好都是自己看官方文档来实现就最好了~ 一.微信分享 微信分享功能需要先在微信开放平台注册应用并 ...

  8. Android 调用系统分享文字、图片、文件,可直达微信、朋友圈、QQ、QQ空间、微博

    原文:Android 调用系统分享文字.图片.文件,可直达微信.朋友圈.QQ.QQ空间.微博 兼容SDK 18以上的系统,直接调用系统分享功能,分享文本.图片.文件到第三方APP,如:微信.QQ.微博 ...

  9. Android 实现微信QQ分享以及第三方登录

    集成准备 在微信开放平台创建移动应用,输入应用的信息,包括移动应用名称,移动应用简介,移动应用图片信息,点击下一步,选择Android 应用,填写信息提交审核. 获取Appkey 集成[友盟+]SDK ...

随机推荐

  1. iOS崩溃日志

    今天看crash report ,有这样两个crash: 调用 stopUpdatingLocation 函数的是一个CLLocationManager 类型的对象,为什么报错的时候会把这个对象转成N ...

  2. js 字符串首字母转为大写 正则

    function replaceReg(str){ var reg = /\b(\w)|\s(\w)/g; str = str.toLowerCase(); return str.replace(re ...

  3. c# 之抽象属性

    抽象属性 属性可以使类.结构.接口的成员,自然也可以是抽象类的抽象属性了,抽象属性同抽象方法一样在派生类中被实现. using System; using System.Collections.Gen ...

  4. c#做对比软件

    一些 HTML内容比较/文本差异比较 开源代码 1. DiffPlex - a .NET Diff Generator    http://diffplex.codeplex.com/SourceCo ...

  5. Input Team

    The Chromium Input team (aka input-dev) is a web platform team focused on making touch (P1) and othe ...

  6. 并查集 (Union Find ) P - The Suspects

    Severe acute respiratory syndrome (SARS), an atypical pneumonia of unknown aetiology, was recognized ...

  7. java源码学习

    Collection List ArrayList LinkedList Vector Stack Set HashSet TreeSet Map HashMap TreeMap LinkedHash ...

  8. Win 7中开启Telnet功能

    参看以下文章: http://winsystem.ctocio.com.cn/Longhorn/472/8756972.shtml

  9. AJAX--XMLHttpRequest五步使使用方法

    传统浏览方式和AJAX方式的不同 多数Web应用程序都使用请求/响应模型从server上获得完整的HTML页面.经常是点击一个button,等待server对应,在点击还有一个button.然后在等待 ...

  10. 基于BP神经网络的简单字符识别算法自小结(C语言版)

    本文均属自己阅读源代码的点滴总结.转账请注明出处谢谢. 欢迎和大家交流.qq:1037701636 email:gzzaigcn2009@163.com 写在前面的闲话: 自我感觉自己应该不是一个非常 ...