扫你码
一个可能让你在微信里更舒服地扫码小工具。
当我们在微信里吃瓜,或者查看朋友分享的一些好东西时:
长按识别二维码后,经常会遇到以下几种情况,这严重影响我们的使用体验:
此时我们只能保存图片到本地,然后再打开对应 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
使用方法
- 安装后,把 App 加入侧边栏快速启动,具体方法每家系统大同小异。
- 在需要扫码的界面,通过侧边栏打开扫你码,冷启动时屏幕会有提示,点击“立即开始”即可,后面
再次扫码不会有提示。 - 当成功识别到二维码后,会有吐司提示,并通过外部浏览器打开。