Android实现QQ分享及注意事项
一、获取APPID和帮助文档
在前面我介绍了关于Android中微信分享的文章《 Android实现微信分享及注意事项》这一篇文章来看看关于QQ分享。
可以参看新手引导和接入说明:http://wiki.open.qq.com/wiki/移动应用接入wiki索引
二、实现代码(转载请说明出处: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分享及注意事项的更多相关文章
- Android实现微信分享及注意事项
一.获取帮助文档并下载相关资料 首先打开微信开放平台:https://open.weixin.qq.com/ 如果没有注册,请先注册并上传开发者资料等待审核. 资源中心----移动应用开发----分享 ...
- Android 解决qq分享后返回程序出现的Bug
问题:当我们使用qq分享时,分享成功后选择留在qq,这个时候按home键,回到手机主界面,在点击回到我的app,这个时候会出现界面显示出来了,但是任何事件都不响应,即按钮没反应. 分析:这个时候回到我 ...
- Android实现微博分享及其注意事项
在前面我写了两篇关于QQ和微信的分享(http://blog.csdn.net/dawanganban/article/details/42015249)(http://blog.csdn.net/d ...
- Android之第三方平台实现QQ登录和QQ分享
目前大多数APP都包含了第三方平台的登录,特别是QQ和微信,这篇博客主要讲的是如何实现QQ第三方平台实现QQ登录和分享功能,功能包含: 登录授权登录获取用户信息(昵称,头像,地址等) QQ分享给好友 ...
- Android实现截图分享qq,微信
代码地址如下:http://www.demodashi.com/demo/13292.html 前言 现在很多应用都有截图分享的功能,今天就来讲讲截图分享吧 今天涉及到以下内容: android权限设 ...
- android 集成QQ互联 (登录,分享)
参考:http://blog.csdn.net/syz8742874/article/details/39271117 http://blog.csdn.net/woblog/article/deta ...
- Android 微信分享与QQ分享功能
微信分享与QQ分享功能现在都挺常见的,可以根据一些第三方社会化分功能快速实现,不过多多少少都不怎么纯净,最好都是自己看官方文档来实现就最好了~ 一.微信分享 微信分享功能需要先在微信开放平台注册应用并 ...
- Android 调用系统分享文字、图片、文件,可直达微信、朋友圈、QQ、QQ空间、微博
原文:Android 调用系统分享文字.图片.文件,可直达微信.朋友圈.QQ.QQ空间.微博 兼容SDK 18以上的系统,直接调用系统分享功能,分享文本.图片.文件到第三方APP,如:微信.QQ.微博 ...
- Android 实现微信QQ分享以及第三方登录
集成准备 在微信开放平台创建移动应用,输入应用的信息,包括移动应用名称,移动应用简介,移动应用图片信息,点击下一步,选择Android 应用,填写信息提交审核. 获取Appkey 集成[友盟+]SDK ...
随机推荐
- iOS崩溃日志
今天看crash report ,有这样两个crash: 调用 stopUpdatingLocation 函数的是一个CLLocationManager 类型的对象,为什么报错的时候会把这个对象转成N ...
- js 字符串首字母转为大写 正则
function replaceReg(str){ var reg = /\b(\w)|\s(\w)/g; str = str.toLowerCase(); return str.replace(re ...
- c# 之抽象属性
抽象属性 属性可以使类.结构.接口的成员,自然也可以是抽象类的抽象属性了,抽象属性同抽象方法一样在派生类中被实现. using System; using System.Collections.Gen ...
- c#做对比软件
一些 HTML内容比较/文本差异比较 开源代码 1. DiffPlex - a .NET Diff Generator http://diffplex.codeplex.com/SourceCo ...
- Input Team
The Chromium Input team (aka input-dev) is a web platform team focused on making touch (P1) and othe ...
- 并查集 (Union Find ) P - The Suspects
Severe acute respiratory syndrome (SARS), an atypical pneumonia of unknown aetiology, was recognized ...
- java源码学习
Collection List ArrayList LinkedList Vector Stack Set HashSet TreeSet Map HashMap TreeMap LinkedHash ...
- Win 7中开启Telnet功能
参看以下文章: http://winsystem.ctocio.com.cn/Longhorn/472/8756972.shtml
- AJAX--XMLHttpRequest五步使使用方法
传统浏览方式和AJAX方式的不同 多数Web应用程序都使用请求/响应模型从server上获得完整的HTML页面.经常是点击一个button,等待server对应,在点击还有一个button.然后在等待 ...
- 基于BP神经网络的简单字符识别算法自小结(C语言版)
本文均属自己阅读源代码的点滴总结.转账请注明出处谢谢. 欢迎和大家交流.qq:1037701636 email:gzzaigcn2009@163.com 写在前面的闲话: 自我感觉自己应该不是一个非常 ...