QQ闪照
在IM工具中,QQ较之于微信一直是比较前卫的,毕竟年轻用户居多。比如QQ闪照就是一个有趣的功能,而且已经推出很久了(记得大概是V6.5左右):不管单聊还是群聊都可用,在发送图片时勾选闪照即可,发送成功后所有人都只能看5秒,时间结束后图片被“销毁”,UI层面被打上厚厚的马赛克。
这个功能一经推出,不少老司机可谓是既爱又恨,我们暂且不说其功能意义和影响。但是相信大家都思考过,怎么把闪照保存下来?
接下来我们就以Android端QQ为例探索一下闪照的持久化存储方式。
截图
想多了哈哈,Android端QQ是直接禁止在闪照页面截图的,所以这条路走不痛。
// 禁止截屏一行代码搞定 getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
突破5秒限制
这个方法非ROOT用户就不用想了,原理上可以通过类似Xposed的框架来修改这个时间限制,以达到一直查看图片的目的,当然这种做法也比较危险,不排除被腾讯封号。
找图片文件
图片消息本质上还是一张图片,肯定是会生成磁盘缓存的,只不过在查看后会删除或者加密文件。网上搜罗之后也有很多类似的方法,原理简单,就是收到闪照消息后,不要查看,而是根据文件修改时间找到相应的存储目录,把里面的文件复制出来。
比如早期的时候是在/Android/data/com.tencent.mobileqq/Tencent/MobileQQ/diskcache/目录下面,后来又把diskcache改成了chatpic/chatimg,总之手Q团队会经常变换目录,不是很好找。并且在Android 11之后谷歌加强了外部存储的隐私权限(参考:Android 11 中的存储机制更新),通过文件管理器查看Android/data目录的时代一去不复返了。
MIUI传送门
不知道有多少人会使用这个功能,在MIUI上默认并不是开启的(在设置 - 特色功能下面)。这个玩意早期很简单,就是MIUI系统层面做了拦截,在长按各种文本控件(TextView)时,会自动提取其中的文字——这个其实在某些时候非常方便,比如不可复制的文本。
在某一个版本