相信做app的都遇到要分享朋友圈,或者把东西分享给别人的这个功能,下面就是实现这个功能的代码。
要是遇到什么问题,在评论区留言,我会在第一时间回复哦!!!

1、第一步添加依赖

    implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'implementation 'com.android.support:design:27.1.1'

2、写一个分享的界面layout_popup_share.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="@color/bgcolor_tabbar"android:gravity="center"android:orientation="horizontal"android:paddingTop="16dp"android:paddingBottom="16dp"><Buttonandroid:id="@+id/bottom_share_qq"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:background="@null"android:drawableTop="qq图片在最下面自己下载,自己导入吧,嘻嘻"android:scaleType="center"android:textColor="#666666"android:text="QQ"android:visibility="gone" /><Buttonandroid:id="@+id/bottom_share_qzone"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:background="@null"android:drawableTop="qq空间图片在最下面自己下载,自己导入吧,嘻嘻"android:scaleType="center"android:textColor="#666666"android:text="QQ空间"android:visibility="gone" /><Buttonandroid:id="@+id/bottom_share_wechat"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:textColor="#666666"android:layout_marginLeft="40dp"android:background="@null"android:drawableTop="微信图片在最下面自己下载,自己导入吧,嘻嘻"android:scaleType="center"android:text="微信" /><Buttonandroid:id="@+id/bottom_share_wxcircle"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:layout_marginRight="40dp"android:textColor="#666666"android:background="@null"android:drawableTop="微信朋友圈图片在最下面自己下载,自己导入吧,嘻嘻"android:scaleType="center"android:text="朋友圈" /><Buttonandroid:id="@+id/bottom_share_sina"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:textColor="#666666"android:background="@null"android:drawableTop="新浪微博图片在最下面自己下载,自己导入吧,嘻嘻"android:scaleType="center"android:text="微博"android:visibility="gone" /><TextViewandroid:id="@+id/version_name_tv"android:visibility="gone"android:layout_width="wrap_content"android:layout_height="wrap_content"/>
</LinearLayout>

qq图片下载
qq空间图片下载
微信朋友圈图片下载
微信图片下载
新浪微博图片下载

3、新建类WeChatShareUtil


import android.content.Context;
import android.graphics.Bitmap;import com.tencent.mm.opensdk.modelmsg.SendMessageToWX;
import com.tencent.mm.opensdk.modelmsg.WXImageObject;
import com.tencent.mm.opensdk.modelmsg.WXMediaMessage;
import com.tencent.mm.opensdk.modelmsg.WXTextObject;
import com.tencent.mm.opensdk.modelmsg.WXWebpageObject;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;import java.io.ByteArrayOutputStream;public class WeChatShareUtil {//从官网申请的合法appIdpublic static final String APP_ID = "xxxx";private static final int TIMELINE_SUPPORTED_VERSION = 0x21020001;//IWXAPI是第三方app和微信通信的openapi接口private IWXAPI api;private Context context;public static WeChatShareUtil weChatShareUtil;public static WeChatShareUtil getInstance(Context context) {if (weChatShareUtil == null) {weChatShareUtil = new WeChatShareUtil();}if (weChatShareUtil.api != null) {weChatShareUtil.api.unregisterApp();}weChatShareUtil.context = context;weChatShareUtil.regToWx();return weChatShareUtil;}//注册应用id到微信private void regToWx() {//通过WXAPIFactory工厂,获取IWXAPI的实例api = WXAPIFactory.createWXAPI(context, APP_ID, true);//将应用的appId注册到微信api.registerApp(APP_ID);}/*** 分享文字到朋友圈或者好友** @param text  文本内容* @param scene 分享方式:好友还是朋友圈*/public boolean shareText(String text, int scene) {//初始化一个WXTextObject对象,填写分享的文本对象WXTextObject textObj = new WXTextObject();textObj.text = text;return share(textObj, text, scene);}/*** 分享图片到朋友圈或者好友** @param bmp   图片的Bitmap对象* @param scene 分享方式:好友还是朋友圈*/public boolean sharePic(Bitmap bmp, int scene) {//初始化一个WXImageObject对象WXImageObject imageObj = new WXImageObject(bmp);//设置缩略图Bitmap thumb = Bitmap.createScaledBitmap(bmp, 60, 60, true);bmp.recycle();return share(imageObj, thumb, scene);}/*** 分享网页到朋友圈或者好友,视频和音乐的分享和网页大同小异,只是创建的对象不同。* 详情参考官方文档:* https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317340&token=&lang=zh_CN** @param url         网页的url* @param title       显示分享网页的标题* @param description 对网页的描述* @param scene       分享方式:好友还是朋友圈*/public boolean shareUrl(String url, String title, Bitmap thumb, String description, int scene) {//初试话一个WXWebpageObject对象,填写urlWXWebpageObject webPage = new WXWebpageObject();webPage.webpageUrl = url;return share(webPage, title, thumb, description, scene);}private boolean share(WXMediaMessage.IMediaObject mediaObject, Bitmap thumb, int scene) {return share(mediaObject, null, thumb, null, scene);}private boolean share(WXMediaMessage.IMediaObject mediaObject, String description, int scene) {return share(mediaObject, null, null, description, scene);}private boolean share(WXMediaMessage.IMediaObject mediaObject, String title, Bitmap thumb, String description, int scene) {//初始化一个WXMediaMessage对象,填写标题、描述WXMediaMessage msg = new WXMediaMessage(mediaObject);if (title != null) {msg.title = title;}if (description != null) {msg.description = description;}if (thumb != null) {msg.thumbData = bmpToByteArray(thumb, true);}//构造一个ReqSendMessageToWX.Req req = new SendMessageToWX.Req();req.transaction = String.valueOf(System.currentTimeMillis());req.message = msg;req.scene = scene;return api.sendReq(req);}//判断是否支持转发到朋友圈//微信4.2以上支持,如果需要检查微信版本支持API的情况, 可调用IWXAPI的getWXAppSupportAPI方法,0x21020001及以上支持发送朋友圈public boolean isSupportWX() {int wxSdkVersion = api.getWXAppSupportAPI();return wxSdkVersion >= TIMELINE_SUPPORTED_VERSION;}private byte[] bmpToByteArray(final Bitmap bmp, final boolean needRecycle) {ByteArrayOutputStream output = new ByteArrayOutputStream();bmp.compress(Bitmap.CompressFormat.PNG, 100, output);if (needRecycle) {bmp.recycle();}byte[] result = output.toByteArray();try {output.close();} catch (Exception e) {e.printStackTrace();}return result;}
}

4、在项目文件夹中,创建一个 wxpi 文件夹,一定要是这个名字,大小写都不能错

新建类WXEntryActivity

public class WXEntryActivity extends Activity implements IWXAPIEventHandler {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);IWXAPI api = WXAPIFactory.createWXAPI(this, WeChatShareUtil.APP_ID, false);api.handleIntent(getIntent(),this);finish();}@Overridepublic void onReq(BaseReq baseReq) {}@Overridepublic void onResp(BaseResp baseResp) {String result;switch (baseResp.errCode) {case BaseResp.ErrCode.ERR_OK:result = "分享成功";break;case BaseResp.ErrCode.ERR_USER_CANCEL:result = null;break;default:result = "分享失败";break;}if (result != null) {//            Toast.makeText(this, baseResp.errCode + result, Toast.LENGTH_SHORT).show();}}
}

5、在需要点击分享的地方,添加分享的点击事件

    BottomSheetDialog shareDialog;shareDialog = new BottomSheetDialog(MineWebViewActivity.this, R.style.BottomDialog);View view = View.inflate(MineWebViewActivity.this, R.layout.layout_popup_share, null);Button wechat = view.findViewById(R.id.bottom_share_wechat);wechat.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Log.d("share", "nativeshare 微信分享 ");if (weChatShareUtil.isSupportWX()) {String desc = "百度";boolean result = true;String url ="http://www.baidu.com";String title="百度";Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon_logo);//添加一个logo图片就可以了 result = weChatShareUtil.shareUrl(url,title,bitmap,desc, SendMessageToWX.Req.WXSceneSession);} else {Toast.makeText(MineWebViewActivity.this, "手机上微信版本不支持分享到朋友圈", Toast.LENGTH_SHORT).show();}}});Button wxcircle = view.findViewById(R.id.bottom_share_wxcircle);wxcircle.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Log.d("share", "nativeshare 微信朋友圈分享 ");if (weChatShareUtil.isSupportWX()) {String desc = "百度";boolean result = true;String url ="http://www.baidu.com";String title="百度";Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon_logo);result = weChatShareUtil.shareUrl(url,title,bitmap,desc, SendMessageToWX.Req.WXSceneTimeline);} else {Toast.makeText(MineWebViewActivity.this, "手机上微信版本不支持分享到朋友圈", Toast.LENGTH_SHORT).show();}}});shareDialog.setContentView(view);shareDialog.show();

android实现微信分享、朋友圈分享功能相关推荐

  1. android中设置lmargin简书,超详细React Native实现微信好友/朋友圈分享功能-Android/iOS双平台通用...

    (一)前言 本文主要会涉及到以下内容: 微信开发者应用申请审核 安装配置微信分享库 微信好友/朋友圈功能实现 (二)应用申请审核 首先大家需要去微信开发平台去注册账号并且创建一个移动应用.(地址:ht ...

  2. android微信朋友圈开发,Android微信、朋友圈分享

    [实例简介] Android调用微信包实现微信.朋友圈分享.并能够获取分享的结果.收到毁掉消息 [实例截图] [核心代码] WeChatShare └── TestWXShare ├── Androi ...

  3. 小程序生成二维码分享朋友圈的功能

    一.如何生成小程序分享页面的二维码? 通过后台接口可以获取小程序任意页面的二维码,具体可以参考https://developers.weixin.qq.com/miniprogram/dev/api/ ...

  4. 小程序实现分享朋友圈分享好友功能

    一.看看效果 二.代码 Page({data: {},// 用户点击右上角分享给好友,要先在分享好友这里设置menus的两个参数,才可以分享朋友圈onShareAppMessage: function ...

  5. Android 仿微信的朋友圈发布(1)

    想自己做一个APP,然后等做到类似发布朋友圈的,微博状态的时候,遇到问题了,完全不知道咋下手. 什么访问相册,列出照片,选择照片进行回传,完全不懂,咋办,自己写?自己写是不可能自己写的,打屎都不可能自 ...

  6. 微信小程序开放「分享到朋友圈」功能

    2020年7月7日(据说是6日深夜),一个很特别的日子,微信低调地放开了一个功能:微信小程序"分享到到朋友圈",这个看似微小的变化,对微信小程序来说意义重大. 用fenng大的话说 ...

  7. 小程序分享到朋友圈功能_来啦!小程序支持分享朋友圈

    上线4年后的小程序,终于能发朋友圈了. 这应该小程序开发者最期待的功能之一. 小程序的推广渠道本来就少,没有链接,没有消息,不在微信和通讯录列表. 在此前,更没有机会获得朋友圈的展示. 作为一个日活近 ...

  8. 微信公众号开发教程(七)JSSDK-监听分享朋友圈事件

    作者:陈惠,叩丁狼教育高级讲师.原创文章,转载请注明出处. 微信JS-SDK是微信公众平台 面向网页开发者提供的基于微信内的网页开发工具包. 通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍 ...

  9. 友盟分享小程序_来啦!小程序支持分享朋友圈!

    朋友圈是微信最大的流量池,小程序支持分享到朋友圈是开发者们期待已久的功能.上线4年的小程序,为什么现在才能分享朋友圈?后续还需要注意哪些问题?小程序未来还会继续开放相关功能吗?文章从小程序的当前发展现 ...

  10. 小程序webview 转发 分享朋友圈

    转战小程序 webview  H5页面 的转发分享朋友圈功能 先说 小程序分享朋友圈的 功能实现 在小程序内部做分享,尚且需要用画布画出带有二维码的图片,在H5页面上更不用说了,根本就碰不着小程序的自 ...

最新文章

  1. python共享内存和分布式实现异步加载数据
  2. Python学习入门基础教程(learning Python)--1.4 Python数据处理基础 .
  3. Mono 2.4 and MonoDevelop 2.0 have been released
  4. URI Scheme注册伪协议实现远程命令执行
  5. 2018湖湘杯web、misc记录
  6. 控制DIV内容滚动的方法,实现不用拖滚动条就可以看到最新消息
  7. Objective-C 2.0 with Cocoa Foundation --- 2,从Hello,World!开始
  8. php function函数用法,js的function函数是什么?js中function的用法
  9. Apache性能诊断与调优
  10. 【李宏毅机器学习】01:机器学习介绍 Introduction
  11. 手机qq2008触屏版_手机版卖家中心在哪里
  12. 圆柱体积计算机公式,圆柱的体积怎么算公式
  13. 第6章 威廉.詹姆斯——意识心理学
  14. 博弈论(1)—— 零和与非零和
  15. 计算机网络工程职业学院,湖南网络工程职业学院理工学院
  16. C/C++数据结构——公路村村通(Prim)
  17. kettle案例4.1.1--抽取文本数据---TSV文件的抽取
  18. 从键盘输入一批字符(以@结束),按要求加密并输出。加密规则为:1.所有字母均转化为小写;2.若是a到y,则转化为下一个字母;3.若是z,则转化为a;4.其他字符保持不变
  19. POJ 3744(Scout YYF I )
  20. C语言编程练习,扫雷游戏

热门文章

  1. 计算机对护理工作的应用研究,【计算机专业论文】护理专业计算机实践教学改革研究(共3924字)...
  2. 每日英语——华晨宇《斗牛》
  3. Introspect MIPI D-PHY/C-PHY DSI/CSI总线协议分析仪(Analyzer)
  4. 五年级下册计算机课ppt课件ppt课件,小学信息技术浙摄影版五年级下册第12课 制作演示文稿课堂教学ppt课件...
  5. java可以在C、E盘创建文件夹,但无法在D盘创建文件夹。
  6. 电商推荐系统-数据加载
  7. RecyclerView双列表联动
  8. ubuntu pip3如何指向python3.7
  9. JAVA8流式编程总结(持续更新)
  10. 商派约会伊米妮陈荷忠吐电商干货