当前位置:   article > 正文

Android实现QQ分享及注意事项_android qq分享

android qq分享

一、获取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 )

  1. public class QQShareManager {
  2. /**
  3. * 链接
  4. */
  5. public static final int QQ_SHARE_WAY_WEBPAGE = 3;
  6. /**
  7. * QQ
  8. */
  9. public static final int QQ_SHARE_TYPE_TALK = 1;
  10. /**
  11. * QQ空间
  12. */
  13. public static final int QQ_SHARE_TYPE_ZONE = 2;
  14. /**
  15. * 分享成功
  16. */
  17. public static final int CALLBACK_CODE_SUCCESS = 0;
  18. /**
  19. * 取消分享
  20. */
  21. public static final int CALLBACK_CODE_CANCEL = 1;
  22. /**
  23. * 拒绝访问
  24. */
  25. public static final int CALLBACK_CODE_DENY = 2;
  26. /**
  27. * 未知
  28. */
  29. public static final int CALLBACK_CODE_UNKNOWN = 3;
  30. private static String appId;
  31. private Tencent mTencent;
  32. private QQShare qqShare;
  33. private QzoneShare qzoneShare;
  34. private QQShareResponse qqShareResponse;
  35. public void registShare(Context context){
  36. //初始化数据
  37. if(appId == null){
  38. appId = QQShareUtil.getQQAppId(context);
  39. }
  40. //初始化分享代码
  41. if(appId != null && (qqShare == null || qzoneShare == null)){
  42. mTencent = Tencent.createInstance(appId, context);
  43. qqShare = new QQShare(context, mTencent.getQQToken());
  44. qzoneShare = new QzoneShare(context, mTencent.getQQToken());
  45. }
  46. }
  47. /**
  48. * 分享qq和空间
  49. * @param shareContent 分享内容
  50. * @param shareType 选择类型(qq、空间)
  51. */
  52. public void shareByQQ(Activity activity, ShareContent shareContent, int shareType){
  53. shareWebPage(activity, shareType, shareContent);
  54. }
  55. private void shareWebPage(Activity activity, int shareType, ShareContent shareContent){
  56. Bundle params = new Bundle();
  57. if(shareType == QQ_SHARE_TYPE_ZONE){
  58. shareWebPageQzone(activity, shareContent, params);
  59. }else{
  60. shareWebPageQQ(activity, shareContent, params);
  61. }
  62. }
  63. private void shareWebPageQQ(Activity activity, ShareContent shareContent, Bundle params) {
  64. params.putString(QQShare.SHARE_TO_QQ_TITLE, shareContent.getTitle());
  65. params.putString(QQShare.SHARE_TO_QQ_SUMMARY, shareContent.getContent());
  66. params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE,
  67. QQShare.SHARE_TO_QQ_TYPE_DEFAULT);
  68. params.putString(QQShare.SHARE_TO_QQ_TARGET_URL, shareContent.getURL());
  69. params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, shareContent.getPicUrl());
  70. doShareToQQ(activity, params, iUiListener);
  71. }
  72. private void shareWebPageQzone(Activity activity, ShareContent shareContent, Bundle params) {
  73. params.putString(QzoneShare.SHARE_TO_QQ_TITLE, shareContent.getTitle());
  74. params.putString(QzoneShare.SHARE_TO_QQ_SUMMARY, shareContent.getContent());
  75. params.putInt(QzoneShare.SHARE_TO_QZONE_KEY_TYPE,
  76. QzoneShare.SHARE_TO_QZONE_TYPE_IMAGE_TEXT);
  77. params.putString(QzoneShare.SHARE_TO_QQ_TARGET_URL, shareContent.getURL());
  78. ArrayList<String> imageUrls = new ArrayList<String>();
  79. imageUrls.add(shareContent.getPicUrl());
  80. params.putStringArrayList(QzoneShare.SHARE_TO_QQ_IMAGE_URL, imageUrls);
  81. //params.putString(QzoneShare.SHARE_TO_QQ_IMAGE_URL, shareContent.getPicUrl());
  82. doShareToQzone(activity, params, iUiListener);
  83. }
  84. private void doShareToQQ(final Activity activity, final Bundle params, final IUiListener iUiListener) {
  85. new Thread(new Runnable() {
  86. @Override
  87. public void run() {
  88. if(qqShare != null){
  89. qqShare.shareToQQ(activity, params, iUiListener);
  90. }
  91. }
  92. }).start();
  93. }
  94. private void doShareToQzone(final Activity activity, final Bundle params, final IUiListener iUiListener) {
  95. new Thread(new Runnable() {
  96. @Override
  97. public void run() {
  98. if(qzoneShare != null){
  99. qzoneShare.shareToQzone(activity, params, iUiListener);
  100. }
  101. }
  102. }).start();
  103. }
  104. private final IUiListener iUiListener = new IUiListener() {
  105. @Override
  106. public void onCancel() {
  107. sendRespCode(CALLBACK_CODE_CANCEL);
  108. }
  109. @Override
  110. public void onComplete(Object response) {
  111. sendRespCode(CALLBACK_CODE_SUCCESS);
  112. }
  113. @Override
  114. public void onError(UiError e) {
  115. sendRespCode(CALLBACK_CODE_DENY);
  116. }
  117. private void sendRespCode(int code) {
  118. if(qqShareResponse != null){
  119. qqShareResponse.respCode(code);
  120. }
  121. }
  122. };
  123. public interface QQShareResponse{
  124. /**
  125. * 分享结果
  126. * @param code 结果码
  127. */
  128. public void respCode(int code);
  129. }
  130. /**
  131. * 注册结果回馈
  132. * @param qqShareResponse
  133. */
  134. public void setOnQQShareResponse(QQShareResponse qqShareResponse){
  135. this.qqShareResponse = qqShareResponse;
  136. }
  137. /**
  138. * 欢迎关注-阳光小强-http://blog.csdn.net/dawanganban
  139. * @author lixiaoqiang
  140. *
  141. */
  142. private abstract class ShareContent{
  143. protected abstract int getShareWay();
  144. protected abstract String getContent();
  145. protected abstract String getTitle();
  146. protected abstract String getURL();
  147. protected abstract String getPicUrl();
  148. }
  149. /**
  150. * 设置分享链接的内容
  151. * @author Administrator
  152. *
  153. */
  154. public class ShareContentWebpage extends ShareContent{
  155. private String title;
  156. private String content;
  157. private String url;
  158. private String picUrl;
  159. public ShareContentWebpage(String title, String content,
  160. String url, String picUrl){
  161. this.title = title;
  162. this.content = content;
  163. this.url = url;
  164. this.picUrl = picUrl;
  165. }
  166. @Override
  167. protected String getContent() {
  168. return content;
  169. }
  170. @Override
  171. protected String getTitle() {
  172. return title;
  173. }
  174. @Override
  175. protected String getURL() {
  176. return url;
  177. }
  178. @Override
  179. protected int getShareWay() {
  180. return QQ_SHARE_WAY_WEBPAGE;
  181. }
  182. @Override
  183. protected String getPicUrl() {
  184. return picUrl;
  185. }
  186. }
  187. }

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/821894
推荐阅读
相关标签
  

闽ICP备14008679号