一个可能让你在微信里更舒服地扫码小工具。

当我们在微信里吃瓜,或者查看朋友分享的一些好东西时:


长按识别二维码后,经常会遇到以下几种情况,这严重影响我们的使用体验:

此时我们只能保存图片到本地,然后再打开对应 App 去识别这些二维码。如此繁琐的操作背后,究其原因无非就是大厂的生态壁垒以及国内互联网的内容审查,有没有一种更加快捷的方式,实现即时在屏幕上扫码,也不局限于微信?答案是有的。

技术原理

利用录屏 MediaProjection 获取到当前屏幕画面,然后 ZXing 识别其中的二维码,最后打开网页,一气呵成。理想和现实的差距就体现在:如何在微信里一触即发?

  • 悬浮窗按钮(可以实现,但是涉及权限和视觉污染,有点不妥)
  • 通知栏常驻(可以实现,但下拉通知栏然后再点按,差点意思)
  • 摇一摇触发(可以实现,但涉及应用保活以及其他应用冲突问题)
  • 侧边栏快速启动(堪称国产 ROM 一绝,从我自己使用的 OriginOS Ocean 到测试机的 MIUI 13,都是支持的,用过这一功能,iPhone 真的就回不去了)

其实还有类似的“悬浮球”功能也能快速打开指定 App,每家手机系统可能实现不一,但是原理都是一致的。

各大 App 分享的图片二维码内容几乎都是 URL,我们只要调起外部浏览器打开就能突破微信的限制,实现吃瓜自由。由于 Android 11(API 30)调整了软件包可见性,当应用 targetSdkVersion >= 30 时,需要在清单文件中添加 <queries> 元素进行适配,否则无法调起外部浏览器。

最后把 Activity 的背景色改为透明,修改默认的进入和退出动画,这样在打开时就不会有明显的割裂感了,堪称完美,一个全新的“扫你码”App 就此诞生。

项目地址:https://github.com/li-yu/FuckWxScan

使用方法

  1. 安装后,把 App 加入侧边栏快速启动,具体方法每家系统大同小异。
  2. 在需要扫码的界面,通过侧边栏打开扫你码,冷启动时屏幕会有提示,点击“立即开始”即可,后面
    再次扫码不会有提示。
  3. 当成功识别到二维码后,会有吐司提示,并通过外部浏览器打开。

演示效果