首页 > 分享 > Android微信SDK实现分享

Android微信SDK实现分享

最新推荐文章于 2021-12-28 15:32:00 发布

000wen_Android 于 2016-08-16 18:44:51 发布

摘自:http://blog.csdn.net/shineflowers/article/details/47951965

用微信提供的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 textObj = new WXTextObject();           textObj.text = text;                      WXMediaMessage msg = new WXMediaMessage();           msg.mediaObject = textObj;           msg.description = text;                      SendMessageToWX.Req req = new SendMessageToWX.Req();                      req.transaction = buildTransaction("textshare");           req.message = msg;                      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 = WechatShareUtil.bitmapToByteArray(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 = WechatShareUtil.bitmapToByteArray(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);                               Bitmap thumbBitmap =  Bitmap.createScaledBitmap(thumb, THUMB_SIZE, THUMB_SIZE, true);           thumb.recycle();         msg.thumbData = WechatShareUtil.bitmapToByteArray(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;           }       }   }  

相关知识

微信识物如何申请
微信识物特惠
微信 OAuth2 网页授权获取用户信息
腾讯位置服务
精品Nodejs实现的微信小程序的科学养花系统的设计与实现
实现类似android:clipChildren=“false”的效果,在使用android:clipChildren多次尝试无效时使用
基于Android的花卉交流平台的设计与实现
Android APP打开另一个APP完整逻辑实现
基于node.js+vue基于Android的平台书架的设计与实现后(开题+程序+论文)计算机毕业设计
微信小程序之植物识别demo(百度开发接口)

网址: Android微信SDK实现分享 https://m.huajiangbk.com/newsview546559.html

所属分类:花卉
上一篇: C语言中的
下一篇: App Inventor移动应用