一、获取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() {@Overridepublic 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() {@Overridepublic void run() {if(qzoneShare != null){qzoneShare.shareToQzone(activity, params, iUiListener);}}}).start();}private final IUiListener iUiListener = new IUiListener() {@Overridepublic void onCancel() {sendRespCode(CALLBACK_CODE_CANCEL);}@Overridepublic void onComplete(Object response) {sendRespCode(CALLBACK_CODE_SUCCESS);}@Overridepublic 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;}@Overrideprotected String getContent() {return content;}@Overrideprotected String getTitle() {return title;}@Overrideprotected String getURL() {return url;}@Overrideprotected int getShareWay() {return QQ_SHARE_WAY_WEBPAGE;}@Overrideprotected String getPicUrl() {return picUrl;}}}

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

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

更多相关文章

  1. android注解初始化view
  2. Android 应用初始化及窗体事件的分发
  3. [android]初始化代码仓库时出现“OSError: [Errno 2] No such fi
  4. Android 打开TextView中的超链接
  5. Android 格式化超链接
  6. Android 远程链接 daemon not running 解决方法
  7. android知识链接汇总(2)

随机推荐

  1. Android内存优化(使用SparseArray和ArrayM
  2. Android高手进阶教程(二十八)之---Androi
  3. Android(安卓)答题
  4. Android开发_推荐一些顶级Android书
  5. WindowManager与窗口管理机制
  6. APP 开发从 0 到 1(二)框架与网络
  7. Android中如何通过程序打开或关闭GPS
  8. android TextView去除顶部和底部留白
  9. Android(安卓)Matrix 介绍
  10. Android中SharedPreferences的使用详解