美文网首页Android 成长收录
微信文件分享的那些坑

微信文件分享的那些坑

作者: Dawn试点人工智能 | 来源:发表于2021-06-16 09:52 被阅读0次

最近因为公司的项目要求,需要做的一件事情就是将本App的文件分享给微信好友。遇到这种需求的第一件事肯定是进入微信开放平台查看微信分享的文档(微信分享),不看还好,看了顿时会有一种想骂人的感觉,因为文档里面根本就没有所谓的文件分享,明确告诉了我们微信分享及收藏目前支持文字、图片、音乐、视频、网页共五种类型。是不是有一万头草泥马在你脑海里奔腾而过?不过没关系,微信和支付宝的文档坑应该大家早有耳闻,文档没有的东西,大家就应该通过强大的百度或者谷歌进行搜索了,相信这应该是大家的强项。
各种搜索之后,终于被我找到了微信分享的SDK里面还有一个WXFileObject,看到这个类,相信大家可以长呼一口气了,不过别者急,你才刚开始入坑,让我们首先来看第一种方式:

private void ShareFileToWeiXin() {    
       WXFileObject fileObj = new WXFileObject();    
       fileObj.fileData = WXUtil.inputStreamToByte(ALBUM_PATH+OKFileName);//文件路径    
       fileObj.filePath = ALBUM_PATH + OKFileName ;    

       //使用媒体消息分享    
       WXMediaMessage msg = new WXMediaMessage(fileObj);    
       msg.title = "title";    

       //发送请求    
       SendMessageToWX.Req req = new SendMessageToWX.Req();    
       //创建唯一标识    
       req.transaction = String.valueOf(System.currentTimeMillis());    
       req.message = msg;    
       req.scene = SendMessageToWX.Req.WXSceneSession;    

       wxapi.sendReq(req);    
   } 

这种方式是会同时将文件的路径以及将文件转化的byte[]数组分享给微信好友,这种方式看起来是可以的,而且使用的时候在某些情况下也是可行的,某些情况下是指分享一些小文件(小于1M),如果我们刚才拿的是一个小文件进行测试,你会你觉得自己写的很不错,会想着这功能也不过如此,然后信心满满的拿给测试去测。但是问题马上就会来了,当测试测过几轮之后,就会发现分享大文件的时候微信调不出来,这时候我想你就该蛋疼了。于是开始各种百度,或者去看文档里面的常见问题,里面的确提到了不能正常调起微信的几种情况


image.png

仔细的看上面的代码,你会发现我们根本就没有发送缩略图,然后你会想着把其他的几种情况都试一遍。试了几遍之后,你会发现都不管用,这时候我想你都快奔溃了吧,这时候你可能又会想起AndroidStudio可以看源码,于是你又去看WXFileObject源码。源码如下


image.png
相信你一眼就能看到CONTENT_LENGTH_LIMIT =10485760(10M),很负责任的告诉大家,这个的确是限制分享文件大小的,但是你可能就会更奇怪了,我明明分享的是10M之内,为啥不可以,这时候你有没有开始心里骂微信了,这是什么鬼。可能这时你又会仔细的去看微信分档里面的其他示例。
看过几次之后,相信我们会看到网页分享URL这块,这时我们就应该想到,既然网页Url可以分享,那我可不可以直接分享文件的地址,这时聪明的你如果把fileObj.fileData = WXUtil.inputStreamToByte(ALBUM_PATH+OKFileName);这句话给注释掉,重新编译,我们就会发现神奇的事情发生了,微信马上就被调起了,是不是感觉很惊奇?好吧,有时候事情就是这样,多此一举导致坑了自己,直接分享我的源码吧
WXFileObject fileObject = new WXFileObject();
                        fileObject.setContentLengthLimit(1024 * 1024 * 10);
                        fileObject.setFilePath(filePath + "/" + fileName);//设置文件本地地址
                        WXMediaMessage msg = new WXMediaMessage();
                        msg.mediaObject = fileObject;
                        msg.title = fileName;

                        SendMessageToWX.Req req = new SendMessageToWX.Req();
                        req.transaction = buildTransaction("file");
                        req.message = msg;
                        req.scene = mTargetScene;
                        LogUtils.i("SendToWXActivity", "mTargetScene---" + buildTransaction("file") + "---" + msg);
                        api.sendReq(req);

好了,写了半天,可能很多废话,多多包涵吧,有啥想交流的,欢迎给我评论。

相关文章

  • 分享pdf文件到微信

    1 点击分享按钮,分享pdf文件到微信 做此功能首先遇到的坑是pdf分享到微信,在微信中打开,无法查看刚刚生成的p...

  • 2021-05-12

    微信分享跳转2次,微信分享跳转微信正在连接,分享微信没反应 这几天搞微信分享,还是有一些坑在里面的,记录踩过的坑;...

  • iOS 利用UIActivityViewController分享

    采用UIActivityViewController分享PDF文件到微信,略坑! 经过笔者多次实验之后,总结出以下...

  • 微信大文件分享的坑

    最近因为公司的项目要求,需要做的一件事情就是将本App的文件分享给微信好友。遇到这种需求的第一件事肯定是进入微信开...

  • 微信文件分享的那些坑

    最近因为公司的项目要求,需要做的一件事情就是将本App的文件分享给微信好友。遇到这种需求的第一件事肯定是进入微信开...

  • 微信分享

    微信公众平台绑定域名 遇到的坑 遇到的问题,微信API的附录里面都有。 这里的坑: 虽然调用了微信分享,但是并不意...

  • 微信那些坑

    1.1confirm Android设备下,confirm点击 "取消" 多次,会出现 "关闭网页" 这个选项。i...

  • 微信分享——ios和安卓机制居然不一样!

    之前分享过一篇转载的微信分享填坑文章 基本涵盖了微信分享功能开发的基本操作。 实际项目中,在做微信分享追踪的时候,...

  • 【转载】微信分享填坑指南

    11月17日更新微信分享ios和安卓的区别 转载自 微信分享填坑指南 准备工作 如果想要是使用微信的分享功能,需要...

  • JSSDK 微信分享

    记录一下我前段时间做微信分享遇到的麻烦和坑。先说一下使用方式,最后写我遇到的坑 引入 JS 文件 我用的是 当然...

网友评论

    本文标题:微信文件分享的那些坑

    本文链接:https://www.haomeiwen.com/subject/mfjxyltx.html