Android插件:关闭WIFI下微信朋友圈视频自动播放插件开发过程详解

本文将会详细介绍怎么开发一个屏蔽微信(7.0.5)朋友圈WIFI下自动播放视频插件

背景介绍

周五下班在地铁上刷微信时看到一个新闻,说是微信更新后在WIFI下自动播放视频还没法关闭。这个问题前几天我也遇到了,但是我记得设置里边有一个工作可以关闭视频自动播放的,但是后来发现还是自动播放了。其实原因下边这两个网友说的已经很明白了。
在这里插入图片描述
在这里插入图片描述
后来我想了一下,这个功能肯定是在代码里有一个判断,根据网络类型来决定是否播放小视频。那么如果可以更改这个判断条件的话,就可以屏蔽WIFI下自动播放视频了。

开发思路

寻找Hook点

通过 adb shell dumpsys activity top可以确定朋友圈是 SnsTimeLineUI 页面,使用Jadx 打开 dex文件可以看到SnsTimeLineUI 的代码(图 2.1)
在这里插入图片描述
图 2.1
在这里插入图片描述
图2.2
其实看到图 2.2中的代码,和我猜想的逻辑基本一致,其实只需关注WiFi判断就可以了, 是否是WiFi环境是通过 rXJ.blP()方法判断的,点进去看一下,如图2.3所示。
在这里插入图片描述
图 2.3

功能实现

其实可以使用Xposed 的param.setResult(false) 来实现这个功能实现,关键代码如下:

clazz = loader.loadClass("com.tencent.mm.plugin.sns.ui.ar");
 if (clazz != null) {
 XposedHelpers.findAndHookMethod(clazz, "blP", new XC_MethodHook() {
   @Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
           param.setResult(false);
       super.afterHookedMethod(param);
               }
          });
    }

插件下载

  • github:https://github.com/852172891/XposedStopWxAutoplay

总结

其实这个插件原理十分简单,微信其实也做了混淆,但是日志信息没有清除。所以大家在项目发布时,一些日志要及时清理,特别要注意字符串。

我是IT小王,如果喜欢我的文章,可以扫码关注我
在这里插入图片描述

为了避免大家浪费时间,直接先看下面的 Gif,略大,请耐心点。看完后,若你觉得会需要到,那么就请听我继续。gif 链接 http://123.57.244.105:8081/commentthumb/GIF.gifgit显示,略大,请耐心GitHub 链接废话一句:这个显示只是其中一部分,重点是:FFmpeg Camera 的录制部分,所以,你的星星(star)也是一种更新通知 (我通知你)。https://github.com/af913337456/WeChatVideoView功能点如果你看完上面的gif图,你会发现如下几点功能 (Function list):1,直观的播放前,可以显示封面缩略图播放时,如果还没有本地缓存,那么先进行下载下载过程中,显示圆型区域进度效果下载后,播放完毕后可以循环播放播放已经播放过的,是具备本地缓存的,也就是既能播放网络,也能播放本地2,隐藏的低耗电量低内存占用无延迟图与视频切换低耦合,高内聚,几行代码接入,一共3个类解析直观的功能点,几乎就是和新版微信的一样,从朋友圈点击一个视频,然后进入到一个 Activity 页面进行加载以及播放。为什么低耗电量和低内存占用?因为采用的是 SurfaceView 而不是 TextureView,图与视频切换的切换延迟也是这个原因。在你的 Activity 中这样使用这样就会以 id 为 activity_main 的 Relativelayout 为父容器装载。因为要避免内存泄露,所以你还需要做完下面的一些步骤,不会超过6行代码。技术点 (可以不看)1,下载操作:自定义 AsyncTask。PS:AsyncTask 比 Thread handler 重量级却方便(回调进度),但是,如果是 即放即用,结束即销毁,那么,no need to think about this;2,视频播放组合拳: surfaceView mediaPlayersurfaceView 用作显示,mediaPlayer 用来解码两者关系: mediaPlayer 绑定 surfaceView。为什么不用 TextrueView?3,进度区域自定义 View,3个画笔绘制,一个圆,一个边,一个扇区。作者:林冠宏 / 指尖下的幽灵掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8博客:http://www.cnblogs.com/linguanh/GitHub : https://github.com/af913337456/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值