Android: 微信分享

在微信开放平台中注册账号

微信开发平台


在管理中心中“创建移动应用”

微信开放平台

按步骤填写应用信息,等待审核通过。

记录应用的appID。


在资源中心中可查看接入指南,下载开发工具包

接入指南

资源下载


将下载的 libammsdk.jar 添加到工程中

添加lib

添加依赖


AndroidManifest.xml 中添加权限

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

在代码中使用开发工具包

WeixinUtil.java

import android.content.Context;
import android.graphics.Bitmap;

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.openapi.IWXAPI;
import com.tencent.mm.sdk.openapi.WXAPIFactory;

/**
 * 微信辅助类,用于微信分享
 */
public class WeixinUtil {

    /**
     * appID
     */
    public static final String APP_ID = "wx96d406a3af36bf38";

    /**
     * 缩略图大小
     */
    private static final int THUMB_SIZE = 150;

    private IWXAPI api;

    private Context context;

    /**
     * 单例模式
     */
    private static WeixinUtil instance;

    private WeixinUtil(Context context){
        this.context = context;

        api = WXAPIFactory.createWXAPI(context, APP_ID, false);

        api.registerApp(APP_ID);
    }

    public static WeixinUtil getInstance(Context context){
        if (instance == null){
            instance = new WeixinUtil(context);
        }
        return instance;
    }

    /**
     * 发送文本信息到微信
     * @param text
     */
    public void sendText(String text){
        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 = "txt" + String.valueOf(System.currentTimeMillis());//transaction用于唯一标识一个请求
        req.message = msg;

        // SendMessageToWX.Req.WXSceneSession 发送至微信的会话中
        // SendMessageToWX.Req.WXSceneTimeLINE 发送至朋友圈
        req.scene = SendMessageToWX.Req.WXSceneTimeline;

        api.sendReq(req);
    }

    /**
     * 发图片到微信
     * @param bitmap
     */
    public void sendBitmap(Bitmap bitmap){
        WXImageObject imgObj = new WXImageObject(bitmap);

        WXMediaMessage msg = new WXMediaMessage();
        msg.mediaObject = imgObj;

        Bitmap thumbBmp = Bitmap.createScaledBitmap(bitmap, THUMB_SIZE, THUMB_SIZE, true);
        bitmap.recycle();
        msg.thumbData = Util.bmpToByteArray(thumbBmp, true);

        SendMessageToWX.Req req = new SendMessageToWX.Req();
        req.transaction = "img"+String.valueOf(System.currentTimeMillis());
        req.message = msg;
        req.scene = SendMessageToWX.Req.WXSceneTimeline;

        api.sendReq(req);
    }
}

Util.java

import android.graphics.Bitmap;

import java.io.ByteArrayOutputStream;

/**
 * 工具类
 */
public class Util {
    /**
     * 将bmp转换为字节数组
     * @param bmp
     * @param needRecycle
     * @return
     */
    public static byte[] bmpToByteArray(final Bitmap bmp, 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;
    }
}

MainActivity.java

// 发送文本
WeixinUtil.getInstance(MainActivity.this).sendText(text);

// 发送图片
WeixinUtil.getInstance(MainActivity.this).sendBitmap(bitmap);

问题

有可能会碰到如下的问题:

第一次可以分享,之后就无法调出分享界面。

这不是程序问题,而是未审核通过。


参考:http://blog.csdn.net/qianfu111/article/details/9115303

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值