//微信接入--包括支付 登录 分享。。。导包 implementation 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
// APP_ID 替换为你的应用从官方网站申请到的合法appID private static final String APP_ID = "wx5bfac4b79b650ac6";
//微信初始化 在MultiDexApplication里面oncrent注册 public static IWXAPI getWxApi() { if (api == null) { // 通过WXAPIFactory工厂,获取IWXAPI的实例 api = WXAPIFactory.createWXAPI(getInstance(), APP_ID, false); // 将该app注册到微信 api.registerApp(APP_ID); } return api; }
package com.example.gaowen38.utils; import android.content.ClipboardManager; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.util.Log; import com.example.gaowen38.R; import com.example.gaowen38.globel.App; import com.tencent.mm.opensdk.modelmsg.SendMessageToWX; import com.tencent.mm.opensdk.modelmsg.WXMediaMessage; import com.tencent.mm.opensdk.modelmsg.WXWebpageObject; import com.tencent.mm.opensdk.openapi.IWXAPI; /** * 分享操作类 * * @author zhangxiaoyang create at 2018/10/17 * @Description 描述: */ public class ShareUtils { private static String TAG = ShareUtils.class.getName(); public static int SHARE_TYPE_1 = 1;//朋友 public static int SHARE_TYPE_2 = 2;//朋友圈 public static int SHARE_TYPE_3 = 3; //收藏 private static IWXAPI wxapi = null; /** * 获取微信api * * @return */ public static IWXAPI getWXApi(Context context) { if (wxapi == null) { wxapi = App.getWxApi(); } return wxapi; } /** * 微信分享 * * @param sharType 分享类型:1 朋友、2 朋友圈、3 收藏 * @param title 分享标题 * @param description 分享内容 */ public static void shareWX(Context context, int sharType, String shareUrl, String title, String description, Bitmap thumbData) { getWXApi(context); WXWebpageObject webpage = new WXWebpageObject(); webpage.webpageUrl = shareUrl; WXMediaMessage msg = new WXMediaMessage(webpage); msg.title = title; msg.description = description; try { if (thumbData == null) { thumbData = getHttpBitmap( BitmapFactory.decodeResource(context.getResources(), R.drawable.gaitubiao),true); } } catch (Exception e) { thumbData = BitmapFactory.decodeResource(context.getResources(), R.drawable.gaitubiao); e.printStackTrace(); } msg.thumbData = WXUtils.bmpToByteArray(thumbData, true); SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildTransaction("webpage"); req.message = msg; if (sharType == 1) { req.scene = SendMessageToWX.Req.WXSceneSession; } else if (sharType == 2) { req.scene = SendMessageToWX.Req.WXSceneTimeline; } else if (sharType == 3) { req.scene = SendMessageToWX.Req.WXSceneFavorite; } wxapi.sendReq(req); Log.i(TAG,"微信分享:" + req); //TODO 不允许释放,否则使用应用分身会失败 // if (thumbData != null) { // thumbData.recycle(); // thumbData = null; // } } /** * 设置分享图片的大小 * * @param bitMap * @param needRecycle * @return */ public static Bitmap getHttpBitmap(Bitmap bitMap, boolean needRecycle) { int width = bitMap.getWidth(); int height = bitMap.getHeight(); // 设置想要的大小 int newWidth = 80; int newHeight = 80; // 计算缩放比例 float scaleWidth = ((float) newWidth) / width; float scaleHeight = ((float) newHeight) / height; // 取得想要缩放的matrix参数 Matrix matrix = new Matrix(); matrix.postScale(scaleWidth, scaleHeight); // 得到新的图片 Bitmap newBitMap = Bitmap.createBitmap(bitMap, 0, 0, width, height, matrix, true); if (needRecycle) bitMap.recycle(); return newBitMap; } /** * 分享时间 * * @param type * @return */ private static String buildTransaction(final String type) { return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis(); } }
//在需要的Activity线程获取缩略图
private final int HANDLER_WHAT_1001 = 1001; Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case 1: backgroundAlpha((float) msg.obj); break; case HANDLER_WHAT_1001: getShareThumb(); break; } } };
/** * 获取微信缩略图 线程里面获取 */ private void getShareThumb() { stopShareThread(); shareThread = new Thread(new Runnable() { @Override public void run() { if (detailOfTheActivityBean != null && detailOfTheActivityBean.getData() != null) { if (!TextUtils.isEmpty(detailOfTheActivityBean.getData().getActivityPhotoUrl())) { //必须 try { thumb = GlideApp.with(DetailOfTheActivityActivity.this) .asBitmap() .load(detailOfTheActivityBean.getData().getActivityPhotoUrl()) .centerCrop() .into(80,80) .get(); } catch (ExecutionException e) { thumb = null; } catch (InterruptedException e) { thumb = null; } } else { thumb = null; } stopShareThread(); } } }); shareThread.start(); } 点击事件调用这个功能 private void getShareWX() { try { String shareUrl = "http://wechat.staticvip.cn/pageDetail/share.html?actId=" + activityId; String description = "my description"; if (thumb != null) { //有缩略图 ShareUtils.shareWX(DetailOfTheActivityActivity.this, ShareUtils.SHARE_TYPE_1, shareUrl, detailOfTheActivityBean.getData().getActivityName(), description, thumb); } else { //有缩略图 ShareUtils.shareWX(DetailOfTheActivityActivity.this, ShareUtils.SHARE_TYPE_1, shareUrl, detailOfTheActivityBean.getData().getActivityName(), description, null); } } catch (Exception e) { e.printStackTrace(); } } /** * 关闭分享线程 */ private void stopShareThread() { if (shareThread != null) { shareThread.interrupt(); //将线程挂起,进行结束 shareThread = null; } } @Override protected void onDestroy() { if (thumb != null) { thumb.recycle(); thumb = null; } stopShareThread(); super.onDestroy(); EventBus.getDefault().unregister(this); UMShareAPI.get(this).release(); }
//微信支付(切记签名一定要正确)
在需要使用的Activity注册
IWXAPI wxapi= WXAPIFactory.createWXAPI(this, "wx5bfac4b79b650ac6");
if (paymentForSignatureBean.getCode() == 1 && paymentForSignatureBean.getMessage().equals("success")) { //获取的东西返回给微信 PayReq request = new PayReq(); request.appId = paymentForSignatureBean.getData().getAppid(); request.partnerId = paymentForSignatureBean.getData().getPartnerid(); request.prepayId = paymentForSignatureBean.getData().getPrepayid(); request.packageValue = paymentForSignatureBean.getData().getPackageX(); request.nonceStr = paymentForSignatureBean.getData().getNoncestr(); request.timeStamp = paymentForSignatureBean.getData().getTimestamp(); request.sign = paymentForSignatureBean.getData().getSign(); request.extData = data; wxapi.sendReq(request); }