安卓微信bug之分享图片无法识别二维码

一、背景介绍

今天测试安卓端APP过程中,发现生成图片分享到微信好友的时候,长按图片无法产生“识别图中二维码”的操作选项(新功能要求图片中带有APP二维码,用户看到后可以识别二维码下载)。

考虑到微信中查看图片的方式主要有两种:查看普通图片和查看图片预览的方式。测试的过程中分享到微信好友,点开分享图片可见是图片预览的方式:



长按图片是没有任何操作选项弹出的。
但是如果我们点击右上角分享给好友或者将图片保存到手机再转发给好友的话,点击打开图片就是普通图片查看的方式:



这时候我们长按图片是会弹出多个操作选项的,如转发、保存到手机、识别图中二维码等。

二、原理简介

为了更好地定位问题,有必要简单梳理下分享到微信和微信识别图中二维码的主要原理。
首先,APP分享到微信好友/微信朋友圈是需要调用微信SDK接口(JS-SDK)的,具体接入方式可查看微信公众平台开发者文档。接入微信的方式有多种,包括分享图片、分享链接等。所以我们安卓端APP是通过调用JS-SDK分享图片的接口将生成的图片分享给微信好友的。
其次微信识别图中二维码,这个是打开普通图片时的功能,简单来说就是微信每打开一张图片,就会调用分析模块去判断图片中是否含有二维码,如果含有的话,则增加“识别图中二维码”功能。注意,如果图片本身二维码较小或者有遮盖的话,也是无法识别出来的。

三、问题定位

为了确认问题产生在我们安卓端代码中使用JS-SDK接口,还是安卓微信本身,我们拿IOS端APP进行对比测试。安卓端APP分享图片给IOS微信好友,识别图中二维码没有问题,证明安卓调用接口没有问题。IOS端APP分享图片给IOS微信好友,识别图中二维码没有问题,分享图片给安卓微信好友,无法识别图中二维码(仍然是图片预览模式),证明确实是安卓微信自身的图片查看方式bug导致的。
也就是说,安卓微信查看第三方APP调用SDK生成并分享给好友的图片采用了预览的查看方式,与ios微信不一致,导致了无法长按识别二维码。
PS:第三方APP生成图片分享到微信二维码由于我们的二维码生成的过小,所以是否安卓微信有这个问题还需要进一步确认。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,627评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,222评论 4 61
  • 路边的街灯照亮了梦而你在我梦里醒着
    芸芸呐阅读 3,081评论 11 6
  • 情不知所起 一往而深
    ZH雪炎阅读 1,482评论 0 0
  • 今天周一《通往财富自由之路》更新了,里面有些思考题,今天就在这里回答下了。 1.特立独行且正确和自以为是的区别是什...
    闻舒阅读 1,326评论 0 0