一. 配置

(1)module下build.gradle

implementation ('com.xyzlf.share:sharesdk:0.0.10') {

exclude group: 'com.android.support', module: 'appcompat-v7'

}

(2)AndroidManifest.xml

权限:

与activity平级,设置微信key:

二. 实现

(1)注册wxapi,

IWXAPI wxapi = WXAPIFactory.createWXAPI(this, "你的微信appid", true);

// 注册

wxapi.registerApp("你的微信appid");

(2)分享图片方法

private static final int THUMB_SIZE = 150;

/**

* 分享图片

* @param bitmap 图片

* @param shareType 0:分享到好友 1:分享到朋友圈

*/

private void sharePicture(Bitmap bitmap, int shareType) {

WXImageObject imgObj = new WXImageObject(bitmap);

WXMediaMessage msg = new WXMediaMessage();

msg.mediaObject = imgObj;

Bitmap thumbBitmap = Bitmap.createScaledBitmap(bitmap, THUMB_SIZE, THUMB_SIZE, true);

bitmap.recycle();

msg.thumbData = Util.bmpToByteArray(thumbBitmap); //设置缩略图

SendMessageToWX.Req req = new SendMessageToWX.Req();

req.transaction = buildTransaction("imgshareappdata");

req.message = msg;

req.scene = shareType;

wxapi.sendReq(req);

}

public static byte[] bmpToByteArray(Bitmap bm) {

ByteArrayOutputStream baos = new ByteArrayOutputStream();

bm.compress(Bitmap.CompressFormat.PNG, 100, baos);

return baos.toByteArray();

}

private String buildTransaction(final String type) {

return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis();

}

(3)截屏方法(截取当前界面)

/**

* 截屏

*

* @param activity 需要截屏的activity

* @return

*/

public static Bitmap capture(Activity activity) {

activity.getWindow().getDecorView().setDrawingCacheEnabled(true);

Bitmap bmp = activity.getWindow().getDecorView().getDrawingCache();

return bmp;

}

(4)调用

sharePicture(capture(MainActivity.this), 0);

至此,分享图片功能完成。

三. 扩展

下面是微信分享文字,链接,视频的

/*

* 分享文字

*/

private void shareText(String text, int shareType) {

//初始化一个WXTextObject对象

WXTextObject textObj = new WXTextObject();

textObj.text = text;

//用WXTextObject对象初始化一个WXMediaMessage对象

WXMediaMessage msg = new WXMediaMessage();

msg.mediaObject = textObj;

msg.description = text;

//构造一个Req

SendMessageToWX.Req req = new SendMessageToWX.Req();

//transaction字段用于唯一标识一个请求

req.transaction = buildTransaction("textshare");

req.message = msg;

//发送的目标场景, 可以选择发送到会话 WXSceneSession 或者朋友圈 WXSceneTimeline。 默认发送到会话。

req.scene = shareType;

mWXApi.sendReq(req);

}

/*

* 分享链接

*/

private void shareWebPage(ShareContent shareContent, int shareType) {

WXWebpageObject webpage = new WXWebpageObject();

webpage.webpageUrl = shareContent.getURL();

WXMediaMessage msg = new WXMediaMessage(webpage);

msg.title = shareContent.getTitle();

msg.description = shareContent.getContent();

Bitmap thumb = BitmapFactory.decodeResource(mContext.getResources(), shareContent.getPictureResource());

if(thumb == null) {

Toast.makeText(mContext, "图片不能为空", Toast.LENGTH_SHORT).show();

} else {

msg.thumbData = Util.bmpToByteArray(thumb);

}

SendMessageToWX.Req req = new SendMessageToWX.Req();

req.transaction = buildTransaction("webpage");

req.message = msg;

req.scene = shareType;

mWXApi.sendReq(req);

}

/*

* 分享视频

*/

private void shareVideo(ShareContent shareContent, int shareType) {

WXVideoObject video = new WXVideoObject();

video.videoUrl = shareContent.getURL();

WXMediaMessage msg = new WXMediaMessage(video);

msg.title = shareContent.getTitle();

msg.description = shareContent.getContent();

Bitmap thumb = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.ic_launcher_background);

// BitmapFactory.decodeStream(new URL(video.videoUrl).openStream());

/**

* 测试过程中会出现这种情况,会有个别手机会出现调不起微信客户端的情况。造成这种情况的原因是微信对缩略图的大小、title、description等参数的大小做了限制,所以有可能是大小超过了默认的范围。

* 一般情况下缩略图超出比较常见。Title、description都是文本,一般不会超过。

*/

Bitmap thumbBitmap = Bitmap.createScaledBitmap(thumb, THUMB_SIZE, THUMB_SIZE, true);

thumb.recycle();

msg.thumbData = Util.bmpToByteArray(thumbBitmap);

SendMessageToWX.Req req = new SendMessageToWX.Req();

req.transaction = buildTransaction("video");

req.message = msg;

req.scene = shareType;

mWXApi.sendReq(req);

}

android 朋友圈图文,Android 微信分享图片(好友和朋友圈)相关推荐

  1. iOS9中实现微信分享到好友、朋友圈

    博客地址:http://blog.csdn.net/bettylu227 微信SDKdemo运行错误问题 微信SDK接入设置 实现分享到好友.朋友圈 微信SDKdemo运行错误问题 下载了官方的dem ...

  2. android开发分享到微信,Android开发之微信分享到好友,朋友圈(示例代码)

    3. 快速集成 第二步:配置AndroidManifest.xml 下面清单文件的配置是全部的,没有的平台就是不需要配置 1.添加权限 2.添加activity信息 (注意: tencent后面的ap ...

  3. android 空间分享到朋友圈,Android开发之微信分享到好友,朋友圈

    3. 快速集成 第二步:配置AndroidManifest.xml 下面清单文件的配置是全部的,没有的平台就是不需要配置 1.添加权限 2.添加activity信息 (注意: tencent后面的ap ...

  4. 微信分享给好友、朋友圈,显示标题、内容、图片

    先看效果: 一:微信公众号配置: 步骤二:绑定域名 先登录微信公众平台进入"公众号设置"的"功能设置"里填写"JS接口安全域名". 步骤三: ...

  5. 微信h5实现分享给朋友url改变_h5网页 微信分享给好友,朋友圈-tp5

    控制器 vendor('wechat.jssdk'); $jssdk =new JSSDK("appid", "appsecret"); $signPackag ...

  6. android之微信分享图片

    android之微信分享图片 微信图像分享分为三类1.二进制图片2.本地图片3.URL地址图片 XML分析:三个Button 添加点击事件! 注意清单文件 权限 <uses-permission ...

  7. android 微信分享多张图片大小,Android 关于微信分享图片过大失败的解决方案

    android 关于微信分享图片过大失败的解决方案.这是因为微信对缩略图做了限制,最大不超过32k. 所以可以先通过图片加载工具获取bitmap,然后进行压缩,压缩方法如下: //压缩图片 publi ...

  8. android+怎么分享图片大小,Android微信分享图片大于32k进行压缩

    微信分享视频的时候,需要传一个图片数组,大小不能大于32k. 解决方案:使用Bitmap自带的compress方法解决了这个问题. 源码如下: package com.example.test; im ...

  9. android微信分享图片压缩,Android微信分享图片按质量压缩的解决方案

    一.杂谈 微信分享图片的迷之bug,前一阵子接盘一个Hybrid App,分享要用原生的分享,搞了一阵子把微信分享搞上,测试又反馈了一个谜一样的Bug,我这边看Log打印了checkArgs fail ...

  10. uniapp项目中使用canvas生成海报并保存、微信分享、发送至朋友圈

    uniapp项目中使用canvas生成海报并保存.微信分享.发送至朋友圈 1.html <!-- 分享模态框 --><canvas canvas-id="poster&qu ...

最新文章

  1. python免安装环境 linux_python如何打包脚本(库也一起打包),直接在linux环境运行,不需要安装库?...
  2. 4.2.1 磁盘的结构
  3. Python assert 断言函数
  4. Postman Could not get any response
  5. 异常(Exception)的学习
  6. dc持久内存与mysql_为什么持久性内存会改变你的世界!
  7. php 系统找不到指定的路径.,PHP网站(windows2003服务器 IIS6)提示:系统找不到指定的路径。...
  8. mysql基本sql语句总结(一)
  9. Python中常用的一些库
  10. Boosting Adversarial Attacks with Momentum论文解读
  11. python 图像刚性变换_Python-OpenCV 19. 图像处理形态学变换
  12. opera官方教程-前台
  13. Proteus仿真:使用8255输出连续方波
  14. Pidgin 插件法解决Ubuntu11.10 QQ
  15. Word错别字校对-JCJC
  16. 杭州造云记 | 甲子光年
  17. C++Primer 第15章 OOP
  18. 招投标系统源码 java招投标系统 招投标系统简介 招投标系统功能设计
  19. 一个强大而简单的 Python Web框架:web.py
  20. 你的Windows 版本即将终止服务。请单击以下下载更新版本的Windows10以继续获得支持

热门文章

  1. mybatis的xmly文件与必依赖
  2. 【计算机网络】1、为什么要学习计算机网络基础
  3. Y2K问题和2038问题
  4. tomcat consider increasing the maximum size of the cache
  5. 【RTD】铂电阻测温原理与具体方法
  6. 52单片机四种方法实现流水灯
  7. Python快速入门(1)常用容器和内置函数介绍
  8. oracle 数据泵导出时间,Oracle DMP备份文件使用数据泵expdp/impdp导出导入dmp文件
  9. TX2 外接硬盘,并随启动自动挂载
  10. stm32cubeMX基于HAL库点亮LED灯教程