package net.oschina.app.common;
import java.io.ByteArrayOutputStream;
import net.oschina.app.R;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.BitmapFactory;
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.WXMediaMessage;
import com.tencent.mm.sdk.openapi.WXWebpageObject;
/**
* 微信朋友圈帮助类
* @author http://my.oschina.net/LittleDY
* @version 1.0
* @created 2014-02-13
*/
public class WXFriendsHelper {
// APP_ID 替换为你的应用从官方网站申请到的合法appId
private static String APP_ID = "wx41be5fe48092e94c";
private static final int MIN_SUPPORTED_VERSION = 0x21020001;// 最小支持的版本
/**
* 分享到微信朋友圈
* @param context
* @param title
* @param url
*/
public static void shareToWXFriends(Activity context,String title,String url){
IWXAPI api = WXAPIFactory.createWXAPI(context,APP_ID,true);
api.registerApp(APP_ID);
// 检查是否安装微信
if(!api.isWXAppInstalled()) {
UIHelper.ToastMessage(context, "抱歉,您尚未安装微信客户端,无法进行微信分享!");
return;
}
// 检查是否支持
if(api.getWXAppSupportAPI() < MIN_SUPPORTED_VERSION) {
UIHelper.ToastMessage(context, "抱歉,您的微信版本不支持分享到朋友圈!");
return;
}
WXWebpageObject webpage = new WXWebpageObject();
webpage.webpageUrl = url;
WXMediaMessage msg = new WXMediaMessage(webpage);
msg.title = title;
msg.description = "分享地址:" + url;
// 缩略图的二进制数据
Bitmap thumb = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon);
msg.thumbData = bmpToByteArray(thumb, true);
SendMessageToWX.Req req = new SendMessageToWX.Req();
// 分享的时间
req.transaction = String.valueOf(System.currentTimeMillis());
req.message = msg;
req.scene = SendMessageToWX.Req.WXSceneTimeline;
api.sendReq(req);
}
// 处理缩略图
public static byte[] bmpToByteArray(final Bitmap bmp, final boolean needRecycle) {
ByteArrayOutputStream output = new ByteArrayOutputStream();
bmp.compress(CompressFormat.PNG, 100, output);
if (needRecycle) {
bmp.recycle();
}
byte[] result = output.toByteArray();
try {
output.close();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}