微信分享操作步骤
- 先到微信开放平台上注册应用:需要用到包名和应用签名;
- 开始正常的开发;
潜在的坑:
微信分享使用的应用签名是MD5值,而且是不带冒号的小写MD5值;
如何获取MD5值?
- 将apk修改后缀为 .rar文件后解压;
- 进入解压后的META-INF目录,该目录下会存在文件CERT.RSA
- 在该目录下打开cmd,输入命令 :
keytool -printcert -file CERT.RSA
进行图文分享时,对分享的图片有大小限制(32k),如果图片超过了32k,在分享时什么现象都没有(这里说的图片大小是指最后赋值给请求时的图片大小)。
/** * 链接分享 */ public static void sendWebSite(IWXAPI api, Bitmap bmp, boolean isTimeline, String url, String title, String description){ if(api != null){ WXWebpageObject webpage = new WXWebpageObject(); webpage.webpageUrl = url; WXMediaMessage msg = new WXMediaMessage(webpage); msg.title = title; msg.description = description; Bitmap thumbBmp = Bitmap.createScaledBitmap(bmp, THUMB_SIZE, THUMB_SIZE, true); // 注意:就是指这里的msg.thumbData大小不能超过32k msg.thumbData = bmpToByteArray(thumbBmp, true); SendMessageToWX.Req req = new SendMessageToWX.Req(); req.transaction = buildTransaction("webpage"); req.message = msg; req.scene = isTimeline? SendMessageToWX.Req.WXSceneSession : 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; }