要做一个监控微信操作行为的功能,即监控这个手机上,用户对微信做了哪些操作行为。现在要做一个监控删除聊天消息的行为记录,即一旦用户删除微信上的聊天记录,就将此行为记录下来。
经过研究,删除聊天消息,有4个情况:聊天页面单条删除、聊天页面选择多条批量删除、在主页面删除一个好友会话、在主页面删除一个群会话。
其实还有一种情况,就是用微信自带的聊天消息清理功能。不过这个就算了,暂时不监控了。
本文的测试环境,都是基于微信6.6.7版本,其他版本的函数名可能不一样。本文也仅作为自己的一个笔记记录,以免以后忘记。
跟踪点击事件,使用Android studio自带的Android profiler。就是下面的这个东东。
准备好后,在点击按钮事件之前,点击profiler的红色记录按钮,开始记录。点击事件完成后,再次点击按钮结束记录。
之后,就可以看到记录了。
搜索click方法,从而觅得点击事件的关键处。
1、单条聊天消息删除时,记录轨迹页面如下。
hook类com.tencent.mm.ui.chatting.viewitems.b$c$a里面的onMMMenuItemSelected函数,如果发生单条聊天消息删除,就会调用此方法。
2、在聊天界面,批量删除多条消息,轨迹如下。
由于批量删除不是弹出上下文菜单,而是选择后在底部点击按钮,之后还有再次确认,才会调用删除功能。因此需要hook类com.tencent.mm.ui.chatting.b.j$2$1里面的onClick函数。
3、在主页面,删除一个好友会话。
删除一个会话时,点击菜单后,会先弹出确认对话框。所以如果直接hook上下文菜单的选项,是不准确的。因为有可能点击了取消。要能正确监控确实删除了会话,需要hook类com.tencent.mm.ui.conversation.b$2里面的onClick函数。
4、在主页面,删除一个群会话。
需要hook类com.tencent.mm.ui.conversation.b$9里面的onClick方法。