微信分享封装类

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.widget.Toast;

import com.tencent.mm.sdk.openapi.IWXAPI;
import com.tencent.mm.sdk.openapi.SendMessageToWX;
import com.tencent.mm.sdk.openapi.WXAPIFactory;
import com.tencent.mm.sdk.openapi.WXImageObject;
import com.tencent.mm.sdk.openapi.WXMediaMessage;
import com.tencent.mm.sdk.openapi.WXTextObject;
import com.tencent.mm.sdk.openapi.WXVideoObject;
import com.tencent.mm.sdk.openapi.WXWebpageObject;
import com.tencent.mm.sdk.platformtools.Util;
import com.xuehu365.xuehu.R;
import com.xuehu365.xuehu.model.Constant;
import com.xuehu365.xuehu.model.VideoEntity;
import com.xuehu365.xuehu.utils.LogHelp;

/**
 * Created by Administrator on 2016/9/6.
 */
public class WXShareUtils {

    private static IWXAPI wxApi;

    private static void init(Context context) {
        //实例化
        wxApi = WXAPIFactory.createWXAPI(context, Constant.wxAppId);
        wxApi.registerApp(Constant.wxAppId);
        //判断是否有安装微信
        if (!wxApi.isWXAppInstalled()) {
            Toast.makeText(context, "您还未安装微信客户端", Toast.LENGTH_SHORT).show();
            return;
        }
    }

    /*
    分享文本
     */
    public static void shareText(Context context, String text, String type) {
        init(context);
        LogHelp.i("wx","here");
        //初始化一个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();
        req.transaction = buildTransaction("text");
        req.message = msg;
        if (Constant.wxTalk.equals(type)) {
            req.scene = SendMessageToWX.Req.WXSceneSession;
        } else if (Constant.wxFriend.equals(type)) {
            req.scene = SendMessageToWX.Req.WXSceneTimeline;
        }
        //调用api接口发送数据到微信
        wxApi.sendReq(req);
    }

    public static String buildTransaction(final String type) {
        return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis();
    }

    /*
    图片分享
     */
    public static void shareImage(Context context,String imgUrl, String type){
        init(context);
        Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_logo);

        //初始化WXTextObject和WXMediaMessage对象
        WXImageObject imageObj = new WXImageObject(bmp);
        WXMediaMessage msg = new WXMediaMessage();
        msg.mediaObject = imageObj;

        //设置缩略图
        Bitmap thumbBmp = Bitmap.createScaledBitmap(bmp,400,400,true);
        bmp.recycle();
        msg.thumbData = Util.bmpToByteArray(thumbBmp,true);

        //构造一个Req
        SendMessageToWX.Req req= new SendMessageToWX.Req();
        req.transaction = buildTransaction("img");

        req.message = msg;
        if (Constant.wxTalk.equals(type)) {
            req.scene = SendMessageToWX.Req.WXSceneSession;
        } else if (Constant.wxFriend.equals(type)) {
            req.scene = SendMessageToWX.Req.WXSceneTimeline;
        }

        //调用api接口发送数据到微信
        wxApi.sendReq(req);
    }

    /*
    分享视频
     */
    public static void shareVideo(Context context, VideoEntity videoEntity, String type){
        init(context);
        //初始化一个WXVideoObject对象,填写url
        WXVideoObject video = new WXVideoObject();
        video.videoUrl= videoEntity.getVideoVid();

        //用一个WXVideoObject对象初始化一个WXMediaMessage对象,填写标题、描述
        WXMediaMessage msg = new WXMediaMessage(video);
        msg.title = videoEntity.getTitle();
        msg.description = videoEntity.getTitle();
        Bitmap thumb = BitmapFactory.decodeResource(context.getResources(),R.drawable.ic_logo);
        msg.thumbData = Util.bmpToByteArray(thumb,true);

        //构造一个Req
        SendMessageToWX.Req req = new SendMessageToWX.Req();
        req.transaction = buildTransaction("video");
        req.message = msg;
        if (Constant.wxTalk.equals(type)) {
            req.scene = SendMessageToWX.Req.WXSceneSession;
        } else if (Constant.wxFriend.equals(type)) {
            req.scene = SendMessageToWX.Req.WXSceneTimeline;
        }

        //调用api接口发送数据到微信
        wxApi.sendReq(req);
    }

    /*
    分享网页
     */
    public static void shareWeb(Context context,String webUrl,String type){
        init(context);
        //初始化一个WXWebpageObject对象,填写URL
        WXWebpageObject webpage = new WXWebpageObject();
        webpage.webpageUrl = webUrl;

        //用WXWebpageObject对象初始化一个WXMediaMessage对象,填写标题、描述
        WXMediaMessage msg = new WXMediaMessage(webpage);
        msg.title = webUrl;
        msg.description = webUrl;
        Bitmap thumb = BitmapFactory.decodeResource(context.getResources(),R.drawable.ic_logo);
        msg.thumbData = Util.bmpToByteArray(thumb,true);

        //构造一个Req
        SendMessageToWX.Req req = new SendMessageToWX.Req();
        req.transaction = buildTransaction("webpage");
        req.message = msg;
        if (Constant.wxTalk.equals(type)) {
            req.scene = SendMessageToWX.Req.WXSceneSession;
        } else if (Constant.wxFriend.equals(type)) {
            req.scene = SendMessageToWX.Req.WXSceneTimeline;
        }

        //调用api接口发送数据到微信
        wxApi.sendReq(req);
    }

}
时间: 2024-10-10 13:04:31

微信分享封装类的相关文章

java实现微信分享

之前项目中涉及到了微信分享的功能,然后总结下供有需要的朋友参考下. 在做之前可以先看下<微信JS-SDK说明文档>,大致了解下.我自己的工程目录是 1.HttpService和HttpServiceImpl主要是发起httppost的请求的封装类. 2.WeChatHttpServiceImpl主要是供外部调用,获取微信分享所需要的几个参数. 3.vo里面的四个类,主要是在供外部调用时,获取最终参数的几个中间类,相当于过渡作用. 4.js文件就是在自己写的页面中进行调用的,初始化这些js的fu

Android应用加入微信分享

一.申请你的AppID http://open.weixin.qq.com/ 友情提示:推荐使用eclipse打包软件最后一步的MD5值去申请AppID 二.官网下载libammsdk.jar包 http://open.weixin.qq.com/download/?lang=zh_CN 三.将libammsdk.jar复制到工程的libs目录 四.在需要分享的Activity编写代码 private IWXAPI wxApi; //实例化 wxApi = WXAPIFactory.create

一处折腾笔记:Android内嵌html5加入原生微信分享的解决的方法

有一段时间没有瞎折腾了. 这周一刚上班萌主过来反映说:微信里面打开聚客宝.分享功能是能够的(这里是用微信自身的js-sdk实现的).可是在android应用里面打开点击就没反应了:接下来狡猾的丁丁在产品群里AT我说:偶们的产品设计不是一直都被技术给反压制住么?真是气死,呵呵.自己刚好有空又有兴趣,于是研究了下.没曾想竟也研究出来了.事后我对整个操作过程整理了下,方便他人也提升自己. 废话少扯.以下上干货. 我的思路是:在点击h5上的分享图标时.触发js事件,在这里面能够对当前设备的操作系统和浏览

通过微信分享链接,后面会被加上from=singlemessage&amp;isappinstalled=1可能导致网页打不开

微信分享会根据分享的不同,为原始链接拼接如下参数: 朋友圈   from=timeline&isappinstalled=0 微信群   from=groupmessage&isappinstalled=0 好友分享 from=singlemessage&isappinstalled=0    项目中,由于请求后台数据的网址中的一部分是通过浏览器地址栏数据获得的, 获得此数据的处理过程没有考虑会被微信加参数的问题,因此得到的数据不正确, 导致网页无法访问. 弄了好久才找到这个原因,

html静态页面实现微信分享思路

微信分享网页的时候,希望分享出来的链接是标题+描述+缩略图,微信开发代码示例里已提供了方法,但只适用于动态页面.由于dedecms是生成了静态文件,其实我想使用ajax获取jssdk参数也能也能实现微信分享功能了,在这里分享给大家.前台HTML代码示例: <script src="http://外部站点引入/js/jquery-1.11.1.min.js"></script>   <script src="http://res.wx.qq.com

通过微信分享链接,后面被加上from=singlemessage&amp;isappinstalled=1导致网页打不开

微信分享会根据分享的不同,为原始链接拼接如下参数: 朋友圈   from=timeline&isappinstalled=0微信群   from=groupmessage&isappinstalled=0好友分享 from=singlemessage&isappinstalled=0 在连接后加上?&再进行分享,分享成功,原理

使用微信JSSDK自定义微信分享标题、描述、和图标

最近做一个项目的时候用到微信的分享 ,实现定义分享标题,图片,了解到微信在发布JSSDK后,把包括自定义分享在内的众多网页服务接口进行了统一.如果要想自定义分享自己的网页信息给好友或朋友圈,就最好使用这个统一的网页服务接口. 微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包. 通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照.选图.语音.位置等手机系统的能力,同时可以直接使用微信分享.扫一扫.卡券.支付等微信特有的能力,为微信用户提供更优质的网页体验. 步

Android 微信分享,分享到朋友圈与分享到好友,以及微信登陆

extends:http://www.cnblogs.com/android100/p/Android-qq.html 一.申请你的AppID http://open.weixin.qq.com/ 友情提示:推荐使用eclipse打包软件最后一步的MD5值去申请AppID 二.官网下载libammsdk.jar包 http://open.weixin.qq.com/download/?lang=zh_CN 三.将libammsdk.jar复制到工程的libs目录 四.在需要分享的Activity

Vue单页式应用(Hash模式下)实现微信分享

前端微信分享的基本步骤: 一.绑定域名: 先登录微信公众平台进入"公众号设置"的"功能设置"里填写"JS接口安全域名".这个不多说,微信开发的都应该清楚. 二.引入js文件: 在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.0.0.js.请注意,如果你的页面启用了https,务必引入 https://res.wx.qq.com/open/js/jweixi