微信、qq、微博第三方分享集成封装代码
来源:互联网 发布:软件销售怎么样 编辑:程序博客网 时间:2024/05/21 12:47
集成第三方分享功能在app中基本是标配,集成SDK步骤这里就不讲了,注意微信分享测试需要签名apk才可以成功哦。在集成过程中遇到了一些坑,特别是在微信的文档写得真是坑爹的时候。。所以如现在把分享关键代码分享出来,如下:
/** * 分享到微信:聊天界面、朋友圈 * * @param api api注册 * @param pos 类型:微信好友、朋友圈 * @param title 标题 * @param description 描述 * @param img 图片地址 * @param url 链接地址 */ public void share_to_wx(final IWXAPI api, final int pos, final String title, final String description, final String img, final String url) { if (!api.isWXAppInstalled()) { ToastUtil.showToast("微信未安装,请先安装微信APP"); remove_share(); return; } // 线程必须开,不然界面卡死无法调起微信 Thread thread = new Thread(new Runnable() { @Override public void run() { LogUtils.i(TAG, "weichart pos:" + pos + "title:" + title + "description:" + description); Bitmap bitmap = null; try { // 压缩图像 bitmap = ImageUtil.zoomBitmap(BitmapFactory.decodeStream(new URL(img).openStream()), 80, 80); } catch (Exception e) { e.printStackTrace(); } if (bitmap == null) { bitmap = BitmapFactory.decodeResource(BaseApplication.getAppContext().getResources(), R.mipmap.ic_launcher); } WXWebpageObject webpage = new WXWebpageObject(); webpage.webpageUrl = url; WXMediaMessage msg = new WXMediaMessage(webpage); msg.title = title; msg.description = description; msg.thumbData = bmpToByteArray(bitmap, true);// 设置缩略图 if (bitmap != null) { bitmap.recycle();// 释放图像所占用的图片内存资源 } SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildTransaction("webpage"); req.message = msg; req.scene = pos; api.sendReq(req); } }); thread.start(); } /*** * 分享到qq空间 * * @param title * @param description * @param img * @param url */ public void share_to_qzone(String title, String description, String img, String url) { Bundle params = new Bundle(); params.putInt(QzoneShare.SHARE_TO_QZONE_KEY_TYPE, QzoneShare.SHARE_TO_QZONE_TYPE_IMAGE_TEXT); params.putString(QzoneShare.SHARE_TO_QQ_TITLE, "" + title); params.putString(QQShare.SHARE_TO_QQ_SUMMARY, "" + description); params.putString(QQShare.SHARE_TO_QQ_TARGET_URL, url); ArrayList<String> list = new ArrayList<>(); //多图片支持 list.add(img); params.putStringArrayList(QQShare.SHARE_TO_QQ_IMAGE_URL, list); params.putString(QQShare.SHARE_TO_QQ_APP_NAME, "蜜藕"); mTencent.shareToQzone(ShareUtil.this, params, mListener); } /*** * 分享到qq * * @param title * @param description * @param img * @param url */ public void share_to_qq(String title, String description, String img, String url) { Bundle params = new Bundle(); params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_DEFAULT); params.putString(QQShare.SHARE_TO_QQ_TITLE, "" + title); params.putString(QQShare.SHARE_TO_QQ_SUMMARY, "" + description); params.putString(QQShare.SHARE_TO_QQ_TARGET_URL, url); params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, img); params.putString(QQShare.SHARE_TO_QQ_APP_NAME, "蜜藕"); mTencent.shareToQQ(ShareUtil.this, params, mListener); } /** * 分享到微博 * * @param title * @param description * @param img * @param url * @return */ public SendMultiMessageToWeiboRequest share_to_weibo(String title, String description, String img, String url) { // 2. 初始化从第三方到微博的消息请求 SendMultiMessageToWeiboRequest request = new SendMultiMessageToWeiboRequest(); try { WeiboMultiMessage weiboMultiMessage = new WeiboMultiMessage(); //文字 TextObject textObject = new TextObject(); textObject.text = title + url; //图片 ImageObject imageObject = new ImageObject(); //设置缩略图。 注意:最终压缩过的缩略图大小不得超过 32kb。 Bitmap bitmap = null; try { // 压缩图像 bitmap = ImageUtil.zoomBitmap(BitmapFactory.decodeStream(new URL(img).openStream()), 120, 120); } catch (Exception e) { e.printStackTrace(); } if (bitmap == null) { bitmap = BitmapFactory.decodeResource(BaseApplication.getAppContext().getResources(), R.mipmap.ic_launcher); } imageObject.setImageObject(bitmap); weiboMultiMessage.textObject = textObject; weiboMultiMessage.imageObject = imageObject; // 用transaction唯一标识一个请求 request.transaction = String.valueOf(System.currentTimeMillis()); request.multiMessage = weiboMultiMessage; if (mWeiboShareAPI.isWeiboAppInstalled()) { mWeiboShareAPI.sendRequest(ShareUtil.this, request); } else { AuthInfo authInfo = new AuthInfo(this, Constant.SINAAPPID, Constant.SINA_REDIRECT_URL, "all"); Oauth2AccessToken accessToken = AccessTokenKeeper.readAccessToken(getApplicationContext()); String token = ""; if (accessToken != null) { token = accessToken.getToken(); } mWeiboShareAPI.sendRequest(this, request, authInfo, token, new WeiboAuthListener() { @Override public void onWeiboException(WeiboException arg0) { ToastUtil.showToast("认证失败!"); remove_share(); } @Override public void onComplete(Bundle bundle) { Oauth2AccessToken newToken = Oauth2AccessToken.parseAccessToken(bundle); AccessTokenKeeper.writeAccessToken(getApplicationContext(), newToken); ToastUtil.showToast("认证成功!"); remove_share(); } @Override public void onCancel() { ToastUtil.showToast("认证取消!"); remove_share(); } } ); } } catch (Exception e) { e.printStackTrace(); } return request; }分享这种功能在应用中最好原子化,因为肯定不是一个地方需要这个功能,所以最好是封装在这个基础上封装一下。分享数据来源可以从后台或者本地获取都可以,根据需求,有分享问题请留言,谢谢
阅读全文
0 0
- 微信、qq、微博第三方分享集成封装代码
- 最详细Android集成QQ,微信,微博分享(不用第三方)
- QQ 微信 第三方登录 分享
- 第三方 ShareSdk QQ、微信分享
- 集成微信的第三方分享
- iOS集成QQ、微信、微博、短信、邮件分享(非第三方集成)
- iOS集成QQ、微信、微博、短信、邮件分享(非第三方集成)
- iOS集成QQ、微信、微博、短信、邮件分享(非第三方集成)
- 集成友盟第三方登录(qq、微信、微信朋友圈、新浪)、分享
- Android 第三方QQ、微信、微博登录分享
- Android使用官方API分享内容到QQ和微信(非第三方集成)
- 史上最详细Android集成QQ,微信,微博分享(不用第三方)持续更新中
- 史上最详细Android集成QQ,微信,微博分享(不用第三方)持续更新中
- 友盟集成第三方登录--微信、QQ实现
- 安卓原生第三方分享(QQ,微信,微博)
- ios 微信分享,QQ分享,微博分享集成
- Android使用ShareSDK集成QQ、微信、微博等第三方分享
- Android使用友盟集成QQ、微信、微博等第三方分享
- 【Scikit-Learn 中文文档】特征选择
- mybatis自动生成工具
- “把数据保存到数据库主表 `archives` 时出错”的解决方法
- 2018年,BI大数据智能系统将继续领跑
- 1.Hadoop介绍---1
- 微信、qq、微博第三方分享集成封装代码
- mysql
- Episode Eight:opencv2.4.9实现向图像添加噪声和对图像滤波去噪
- Python,PyCharm2017安装教程
- Sentry简介—Audit Log
- Tag Character postion , '' Error!
- java中compareTo的用法
- pyspark之DataFrame学习【指定dataFrame模式】(2)
- REPL