广告
返回顶部
首页 > 资讯 > 移动开发 >Android微信SDK实现分享
  • 672
分享到

Android微信SDK实现分享

sdkAndroid 2022-06-06 05:06:45 672人浏览 泡泡鱼
摘要

用微信提供的SDK来实现分享: 从Http://open.weixin.qq.com下载Android相关的jar包,将libammsdk.jar加入到项目中。 微信分享的核心

微信提供的SDK来实现分享:

Http://open.weixin.qq.com下载Android相关的jar包,将libammsdk.jar加入到项目中。

微信分享的核心类,部分代码如下:

WechatShareManager.java


package com.jackie.umeng.share; 
import android.content.Context; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.util.Log; 
import android.widget.Toast; 
import com.tencent.mm.sdk.modelmsg.SendMessageToWX; 
import com.tencent.mm.sdk.modelmsg.WXImageObject; 
import com.tencent.mm.sdk.modelmsg.WXMediaMessage; 
import com.tencent.mm.sdk.modelmsg.WXTextObject; 
import com.tencent.mm.sdk.modelmsg.WXVideoObject; 
import com.tencent.mm.sdk.modelmsg.WXWEBpageObject; 
import com.tencent.mm.sdk.openapi.IWXAPI; 
import com.tencent.mm.sdk.openapi.WXAPIFactory; 
 
public class WechatShareManager { 
 private static final int THUMB_SIZE = 150; 
 public static final int WECHAT_SHARE_WAY_TEXT = 1; //文字 
 public static final int WECHAT_SHARE_WAY_PICTURE = 2; //图片 
 public static final int WECHAT_SHARE_WAY_WEBPAGE = 3; //链接 
 public static final int WECHAT_SHARE_WAY_VIDEO = 4; //视频 
 public static final int WECHAT_SHARE_TYPE_TALK = SendMessageToWX.Req.WXSceneSession; //会话 
 public static final int WECHAT_SHARE_TYPE_FRENDS = SendMessageToWX.Req.WXSceneTimeline; //朋友圈 
 private static WechatShareManager mInstance; 
 private ShareContent mShareContentText, mShareContentPicture, mShareContentWebpag, mShareContentVideo; 
 private IWXAPI mWXApi; 
 private Context mContext; 
 private WechatShareManager(Context context){ 
  this.mContext = context; 
  //初始化数据 
  //初始化微信分享代码 
  initWechatShare(context); 
 } 
  
 public static WechatShareManager getInstance(Context context){ 
  if(mInstance == null){ 
   mInstance = new WechatShareManager(context); 
  } 
  return mInstance; 
 } 
 private void initWechatShare(Context context){ 
  if (mWXApi == null) { 
   mWXApi = WXAPIFactory.createWXAPI(context, WechatShareUtil.WECHAT_APP_ID, true); 
  } 
  mWXApi.reGISterApp(WechatShareUtil.WECHAT_APP_ID); 
 } 
  
 public void shareByWebchat(ShareContent shareContent, int shareType){ 
  switch (shareContent.getShareWay()) { 
  case WECHAT_SHARE_WAY_TEXT: 
   shareText(shareContent, shareType); 
   break; 
  case WECHAT_SHARE_WAY_PICTURE: 
   sharePicture(shareContent, shareType); 
   break; 
  case WECHAT_SHARE_WAY_WEBPAGE: 
   shareWebPage(shareContent, shareType); 
   break; 
  case WECHAT_SHARE_WAY_VIDEO: 
   shareVideo(shareContent, shareType); 
   break; 
  } 
 } 
 private abstract class ShareContent { 
  protected abstract int getShareWay(); 
  protected abstract String getContent(); 
  protected abstract String getTitle(); 
  protected abstract String getURL(); 
  protected abstract int getPictureResource(); 
 } 
  
 public class ShareContentText extends ShareContent { 
  private String content; 
   
  public ShareContentText(String content){ 
   this.content = content; 
  } 
  @Override 
  protected int getShareWay() { 
   return WECHAT_SHARE_WAY_TEXT; 
  } 
  @Override 
  protected String getContent() { 
   return content; 
  } 
  @Override 
  protected String getTitle() { 
   return null; 
  } 
  @Override 
  protected String getURL() { 
   return null; 
  } 
  @Override 
  protected int getPictureResource() { 
   return -1; 
  } 
 } 
  
 public ShareContent getShareContentText(String content) { 
  if (mShareContentText == null) { 
   mShareContentText = new ShareContentText(content); 
  } 
  return (ShareContentText) mShareContentText; 
 } 
  
 public class ShareContentPicture extends ShareContent { 
  private int pictureResource; 
  public ShareContentPicture(int pictureResource){ 
   this.pictureResource = pictureResource; 
  } 
  @Override 
  protected int getShareWay() { 
   return WECHAT_SHARE_WAY_PICTURE; 
  } 
  @Override 
  protected int getPictureResource() { 
   return pictureResource; 
  } 
  @Override 
  protected String getContent() { 
   return null; 
  } 
  @Override 
  protected String getTitle() { 
   return null; 
  } 
  @Override 
  protected String getURL() { 
   return null; 
  } 
 } 
  
 public ShareContent getShareContentPicture(int pictureResource) { 
  if (mShareContentPicture == null) { 
   mShareContentPicture = new ShareContentPicture(pictureResource); 
  } 
  return (ShareContentPicture) mShareContentPicture; 
 } 
  
 public class ShareContentWebpage extends ShareContent { 
  private String title; 
  private String content; 
  private String url; 
  private int pictureResource; 
  public ShareContentWebpage(String title, String content, String url, int pictureResource){ 
   this.title = title; 
   this.content = content; 
   this.url = url; 
   this.pictureResource = pictureResource; 
  } 
  @Override 
  protected int getShareWay() { 
   return WECHAT_SHARE_WAY_WEBPAGE; 
  } 
  @Override 
  protected String getContent() { 
   return content; 
  } 
  @Override 
  protected String getTitle() { 
   return title; 
  } 
  @Override 
  protected String getURL() { 
   return url; 
  } 
  @Override 
  protected int getPictureResource() { 
   return pictureResource; 
  } 
 } 
  
 public ShareContent getShareContentWebpag(String title, String content, String url, int pictureResource) { 
  if (mShareContentWebpag == null) { 
   mShareContentWebpag = new ShareContentWebpage(title, content, url, pictureResource); 
  } 
  return (ShareContentWebpage) mShareContentWebpag; 
 } 
  
 public class ShareContentVideo extends ShareContent { 
  private String url; 
  public ShareContentVideo(String url) { 
   this.url = url; 
  } 
  @Override 
  protected int getShareWay() { 
   return WECHAT_SHARE_WAY_VIDEO; 
  } 
  @Override 
  protected String getContent() { 
   return null; 
  } 
  @Override 
  protected String getTitle() { 
   return null; 
  } 
  @Override 
  protected String getURL() { 
   return url; 
  } 
  @Override 
  protected int getPictureResource() { 
   return -1; 
  } 
 } 
  
 public ShareContent getShareContentVideo(String url) { 
  if (mShareContentVideo == null) { 
   mShareContentVideo = new ShareContentVideo(url); 
  } 
  return (ShareContentVideo) mShareContentVideo; 
 } 
  
 private void shareText(ShareContent shareContent, int shareType) { 
  String text = shareContent.getContent(); 
  //初始化一个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 sharePicture(ShareContent shareContent, int shareType) { 
  Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), shareContent.getPictureResource()); 
  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, true); //设置缩略图 
  SendMessageToWX.Req req = new SendMessageToWX.Req(); 
  req.transaction = buildTransaction("imgshareappdata"); 
  req.message = msg; 
  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, true); 
  } 
  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.send_music_thumb); 
//  BitmapFactory.decodeStream(new URL(video.videoUrl).openStream()); 
   
  Bitmap thumbBitmap = Bitmap.createScaledBitmap(thumb, THUMB_SIZE, THUMB_SIZE, true); 
  thumb.recycle(); 
  msg.thumbData = Util.bmpToByteArray(thumbBitmap, true); 
  SendMessageToWX.Req req = new SendMessageToWX.Req(); 
  req.transaction = buildTransaction("video"); 
  req.message = msg; 
  req.scene = shareType; 
  mWXApi.sendReq(req); 
 } 
 private String buildTransaction(final String type) { 
  return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis(); 
 } 
}

MainActivity.java


package com.jackie.umeng.share; 
import com.jackie.umeng.share.WechatShareManager.ShareContentPicture; 
import com.jackie.umeng.share.WechatShareManager.ShareContentText; 
import com.jackie.umeng.share.WechatShareManager.ShareContentVideo; 
import android.app.Activity; 
import android.content.Context; 
import android.content.pm.PackageManager; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.Toast; 
public class MainActivity extends Activity implements OnClickListener { 
 private Button mShareText, mSharePicture, mShareVideo; 
 private WechatShareManager mShareManager; 
 private Context mContext; 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
  setContentView(R.layout.activity_main); 
  mShareText = (Button) findViewById(R.id.share_text); 
  mSharePicture = (Button) findViewById(R.id.share_picture); 
  mShareVideo = (Button) findViewById(R.id.share_video); 
  mShareText.setOnClickListener(this); 
  mSharePicture.setOnClickListener(this); 
  mShareVideo.setOnClickListener(this); 
  mContext = this; 
  mShareManager = WechatShareManager.getInstance(mContext); 
 } 
 @Override 
 public void onClick(View v) { 
  if (!isWebchatAvaliable()) { 
   Toast.makeText(mContext, "请先安装微信", Toast.LENGTH_LONG).show(); 
   return; 
  } 
  switch (v.getId()) { 
  case R.id.share_text: 
   ShareContentText mShareContentText = (ShareContentText) mShareManager.getShareContentText("微信文本分享"); 
   mShareManager.shareByWebchat(mShareContentText, WechatShareManager.WECHAT_SHARE_TYPE_FRENDS); 
   break; 
  case R.id.share_picture: 
   ShareContentPicture mShareContentPicture = (ShareContentPicture) mShareManager.getShareContentPicture(R.drawable.share); 
   mShareManager.shareByWebchat(mShareContentPicture, WechatShareManager.WECHAT_SHARE_TYPE_FRENDS); 
   break; 
  case R.id.share_video: 
   ShareContentVideo mShareContentVideo = (ShareContentVideo) mShareManager.getShareContentVideo("http://baidu.hz.letv.com/kan/agSlT?fr=v.baidu.com/"); 
   mShareManager.shareByWebchat(mShareContentVideo, WechatShareManager.WECHAT_SHARE_TYPE_FRENDS); 
   break; 
  default: 
   break; 
  } 
 } 
 private boolean isWebchatAvaliable() { 
  //检测手机上是否安装了微信 
  try { 
   getPackageManager().getPackageInfo("com.tencent.mm", PackageManager.GET_ACTIVITIES); 
   return true; 
  } catch (Exception e) { 
   return false; 
  } 
 } 
} 
您可能感兴趣的文章:Android—基于微信开放平台v3SDK开发(微信支付填坑)Android编程之微信SDK分享功能过程步骤详细分析android 微信 sdk api调用不成功解决方案Android开发:微信授权登录与微信分享完全解析记录Android微信分享功能的吐槽与思考Android编程实现微信分享信息的方法Android应用中加入微信分享简单方法javascript实现微信分享javascript实现修改微信分享的标题内容等js实现通用的微信分享组件示例


--结束END--

本文标题: Android微信SDK实现分享

本文链接: https://www.lsjlt.com/news/22967.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android微信SDK实现分享
    用微信提供的SDK来实现分享: 从http://open.weixin.qq.com下载Android相关的jar包,将libammsdk.jar加入到项目中。 微信分享的核心...
    99+
    2022-06-06
    sdk Android
  • 微信JS-SDK如何实现微信分享接口开发
    这篇文章给大家分享的是有关微信JS-SDK如何实现微信分享接口开发的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。最近项目中的网页通过微信分享朋友或朋友圈等功能出现了无法显示分享图...
    99+
    2022-10-19
  • ThinkPHP5集成JS-SDK实现微信自定义分享功能
    微信链接分享给好友时能够自定义标题、简介和logo,现将ThinkPHP5集成JS-SDK实现微信自定义分享功能的过程整理成文。 Jssdk类库 1、文件名及位置 名字:Jssdk....
    99+
    2023-03-11
    ThinkPHP5集成JS-SDK实现微信自定义分享功能 微信自定义分享功能
  • Android 实现微信,微博,微信朋友圈,QQ分享的功能
    Android 实现微信,微博,微信朋友圈,QQ分享的功能 一、去各自所在的开发者平台注册相应的Key值;引入相关jar包、权限等 二、ShareUtil工具类 impor...
    99+
    2022-06-06
    朋友圈 Android
  • Android编程实现微信分享信息的方法
    本文实例讲述了Android编程实现微信分享信息的方法。分享给大家供大家参考,具体如下: 随着微信越来越火,越来越多的应用要求有分享到微信的功能。虽然有很多平台都帮集成有分享功...
    99+
    2022-06-06
    方法 微信分享 Android
  • Android编程之微信SDK分享功能过程步骤详细分析
    本文实例讲述了Android编程之微信SDK分享功能过程步骤详细分析。分享给大家供大家参考,具体如下: 之前已经分析过怎么用官方的demo分享微信信息了,在这里我就不再多说,其...
    99+
    2022-06-06
    程之 sdk Android
  • Android实现app分享文件到微信功能
    本文实例为大家分享了Android实现app分享文件到微信的具体代码,供大家参考,具体内容如下 两种实现方案: 1.使用WXFileObject构造分享方法发送到微信; 2.调用系统...
    99+
    2022-11-12
  • ThinkPHP5怎么集成JS-SDK实现微信自定义分享功能
    今天小编给大家分享一下ThinkPHP5怎么集成JS-SDK实现微信自定义分享功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下...
    99+
    2023-07-05
  • Android 微信图片分享功能
    我们都知道,通过 微信官方 分享sdk 支持图片分享,而且有多种方式。官方链接 可直接查看,不再赘述。 本文要解决的问题是,分享本地带二维码的图片给微信好友和朋友圈。朋友圈图...
    99+
    2022-06-06
    图片 Android
  • 分享Android微信红包插件
    本文实例为大家分享了Android微信红包插件,供大家参考,具体内容如下 效果图: 具体代码 @TargetApi(Build.VERSION_CODES.JELLY_BE...
    99+
    2022-06-06
    插件 Android
  • android微信支付源码分享
    本文为大家分享了android微信支付源码,供大家参考,具体内容如下 参数配置 public static final String APP_ID ; public sta...
    99+
    2022-06-06
    源码分享 源码 Android
  • js如何实现微信分享
    这篇文章将为大家详细讲解有关js如何实现微信分享,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下微信分享代码,先引入:<script type=...
    99+
    2022-10-19
  • Android实现微信分享带有缩略图的网页
    前言 最近做了一个web app 需要做微信分享。 需求是分享web页还要带有图片,并且图片还不是本地的,这就有点坑了, 也就是说图片还要从网络实时获取并且是同步的,如果是异步...
    99+
    2022-06-06
    微信分享 缩略图 Android
  • 使用Android怎么实现app分享文件到微信
    使用Android怎么实现app分享文件到微信?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。两种实现方案:使用WXFileObject构造分享方法发送到微信;2...
    99+
    2023-06-15
  • 详解Android微信登录与分享
    Android 使用微信登录、分享功能 具体的文档详情微信官网上介绍(微信官网文档),本人直接按照项目部署步骤进行讲解: 第一步:申请你的AppID; 第二步:依赖 depe...
    99+
    2022-06-06
    Android
  • Android实战ShareSDk的使用,实现一键分享微信好友
    要在Android应用中实现一键分享到微信好友,你可以使用ShareSDK库。下面是使用ShareSDK实现一键分享微信好友的步骤:...
    99+
    2023-09-21
    Android
  • Android开发中实现登录微信与分享的方法
    本篇文章给大家分享的是有关Android开发中实现登录微信与分享的方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。第一步:申请你的AppID;第二步:依赖dependenci...
    99+
    2023-05-31
    android roi
  • Android调用微信登陆、分享、支付
    用了微信sdk各种痛苦,感觉比qq sdk调用麻烦多了,回调过于麻烦,还必须要在指定包名下的actvity进行回调,所以我在这里写一篇博客,有这个需求的朋友可以借鉴一下,以后自...
    99+
    2022-06-06
    登陆 Android
  • 关于Android实现简单的微信朋友圈分享功能
    1.先下载微信分享的jar包放在lib目录下,并且添加依赖, 清单文件添加 <activity android:name=".wxapi.WXEntryA...
    99+
    2022-06-06
    朋友圈 Android
  • Android实现分享微信好友及出现闪退的解决办法
     1.申请微信APPID 要实现分享到微信的功能,首先要到微信开放平台申请一个APPID。但在申请APPID的时候需要填写一个应用签名和应用包名。需要注意的是包名必须...
    99+
    2022-06-06
    Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作