一、获取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 imageUrls = new ArrayList();
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实现微信分享及注意事项》