实现效果:

让微信永远弹不出那个删除的对话框不就相当于屏蔽掉该功能了吗?哈哈效果如图:

实现原理:

同样是利用AccessibilityService辅助服务,关于这个服务类还不了解的同学可以先看下我前两篇的博客,原理都一样:

http://www.cnblogs.com/cxk1995/p/6363574.html(抢红包)

http://www.cnblogs.com/cxk1995/p/6366273.html(监听微信聊天)

1.我们知道,其实微信每次删除联系人都会弹出此页面

2.如果你对AccessibilityService有过了解或者有看过我之前的两篇博客,你会知道,其实每次弹出这个框,都会触发AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED这个事件,所以我们只要在每次触发该事件的时候进行判断当前页面是不是处于删除联系人对话框,如果是,我们模拟点击取消按钮。思路什么的其实都很简单,可以直接看下代码:

package com.cxk.wechatdeletefail;import android.accessibilityservice.AccessibilityService;
import android.content.Intent;
import android.text.TextUtils;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.Toast;/*** Created by cxk on 2017/2/9.* <p>* email:471497226@qq.com* <p>* 屏蔽微信"删除联系人"和"拉黑"功能*/public class DeleteFailService extends AccessibilityService {/*** 判断是不是删除联系人弹框*/private boolean isDeleteDialog;/*** 判断是不是拉黑联系人弹框*/private boolean isDefriendDialog;@Overridepublic void onAccessibilityEvent(AccessibilityEvent event) {int eventType = event.getEventType();switch (eventType) {//进入聊天页面会触发该事件case AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED://获取当前聊天页面根布局AccessibilityNodeInfo rootNode = getRootInActiveWindow();//屏蔽微信"删除联系人"和"拉黑"功能
                DeleteFail(rootNode);break;}}/*** 遍历所有控件,判断是不是删除联系人界面或者拉黑界面,如果是则模拟点击"取消",让它消失。** @param rootNode*/private void DeleteFail(AccessibilityNodeInfo rootNode) {if(rootNode!=null){for (int i = 0; i < rootNode.getChildCount(); i++) {AccessibilityNodeInfo node = rootNode.getChild(i);//判断是不是删除联系人弹出框if("android.widget.TextView".equals(node.getClassName().toString())){if(!TextUtils.isEmpty(node.getText())){if(node.getText().toString().contains("将同时删除与该联系人的聊天记录")){isDeleteDialog=true;}}}//判断是不是拉黑联系人弹出框if("android.widget.TextView".equals(node.getClassName().toString())){if(!TextUtils.isEmpty(node.getText())){if(node.getText().toString().contains("你将不再收到对方的消息,并且你们相互看不到对方朋友圈的更新")){isDefriendDialog=true;}}}//模拟点击取消按钮让对话框消失if("android.widget.Button".equals(node.getClassName().toString())){if(isDeleteDialog||isDefriendDialog){if(!TextUtils.isEmpty(node.getText())){if(node.getText().toString().equals("取消")){node.performAction(AccessibilityNodeInfo.ACTION_CLICK);}}}}}}}/*** 必须重写的方法:系统要中断此service返回的响应时会调用。在整个生命周期会被调用多次。*/@Overridepublic void onInterrupt() {Toast.makeText(this, "我快被终结了啊-----", Toast.LENGTH_SHORT).show();}/*** 服务开始连接*/@Overrideprotected void onServiceConnected() {Toast.makeText(this, "服务已开启", Toast.LENGTH_SHORT).show();super.onServiceConnected();}/*** 服务断开** @param intent* @return*/@Overridepublic boolean onUnbind(Intent intent) {Toast.makeText(this, "服务已被关闭", Toast.LENGTH_SHORT).show();return super.onUnbind(intent);}
}

使用方法:

设置-辅助功能-无障碍-点击WechatDeletefail开启即可(或者在设置中查找辅助功能等)

写在最后:

AccessibilityService服务类很好玩,如果你对他了解的话其实可以做很多事哈哈。

其实这只是一个小例子而已,例如你想让微信加不了好友或者发不了红包等等其实都跟上面的方法类似。

个人兴趣研究,不建议用在非法途径上!!

欢迎一起讨论学习:471497226@qq.com

转载于:https://www.cnblogs.com/cxk1995/p/6384114.html

Android实现屏蔽微信拉黑和删除联系人功能相关推荐

  1. APP - 微信拉黑和删除有什么不同?还是好友吗?

    一.拉黑 1.1.拉黑方 通过[我][设置][隐私][通讯录黑名单]可以洗白.且拉黑或洗白时均不会通知对方. 1.2.被拉黑 所有发送的会话.双方朋友圈均被屏蔽,除非对方主动为自己洗白,否则无法重新加 ...

  2. 微信拉黑和删除有啥区别?这是一个困扰良久的未解之谜,微信团队官微在微博科普了拉黑与删除的区别

    这是一个困扰良久的未解之谜.拉黑和删除之后,还可以收发消息吗?聊天记录还在吗?还可以重新添加吗?对方知道自己被我拉黑/删除吗?来,你要的答案都在这.以后,拉黑还是删除,你不会再搞错了吧. 问:还可以收 ...

  3. 程序员告诉你“拉黑”和“删除”在微信里的区别!

    微信的迅速发展已经渗透到我们的日常生活,每个人几乎每天都在使用微信.那么微信上面有一个"删除"与"拉黑"的功能,这两者之间有何区别?一名程序员小姐姐含泪说出了答 ...

  4. Php微信拉黑,被好友悄悄拉黑、删除,试试微信这一功能,“黑名单”批量显示!...

    被好友悄悄拉黑.删除,试试微信这一功能,"黑名单"批量显示! 2020-04-11 对于很多人来说,在互联网信息时代,借助一些手机软件,确实享受到了便利,而说起网络社交,目前微信的 ...

  5. 测试微信拉黑软件,如何检测微信里有没有人把你拉黑?教你一招

    微信和QQ,你真的会用吗? 行吧 看在你们这么 不会用QQ和微信的份上 今天就教教你们 微信未读消息的聊天图片与视频 失效时间是72小时 如果72小时内没有查看 会自动失效 手机聊微信的时候 在十秒钟 ...

  6. 微信拉黑的人怎么找回来?3个方法解决!

    案例:被拉黑的人如何恢复? [想问一下,微信拉黑了别人,怎样才能悄无声息找回来?] 微信是一款常用的社交软件,随着人们生活水平的提高,微信已经成为人们生活中不可或缺的一部分.然而在使用微信时,有时会不 ...

  7. 微信拉黑的人怎么找回来?3步找回“失踪”的好友

    微信,说到这个应用,基本上全国都在用这个社交软件,聊天.工作事项.写日志等等几乎都是可以在上方实现的,微信拉黑的人怎么找回来? 说到微信拉黑,就是将你觉得有些多余的好友拉进黑名单里面,拉入黑名单后对方 ...

  8. android com.mylhyl,Android 高仿微信朋友圈拍照上传功能

    模仿微信朋友圈发布动态,输入文字支持文字多少高度自增,有一个最小输入框高度,输入文字有限制,不过这些都很easy! 1. photopicker的使用 这是一个支持选择多张图片,点击图片放大,图片之间 ...

  9. android 微信高仿,Android 高仿微信朋友圈拍照上传功能

    模仿微信朋友圈发布动态,输入文字支持文字多少高度自增,有一个最小输入框高度,输入文字有限制,不过这些都很easy! 1. PhotoPicker的使用 这是一个支持选择多张图片,点击图片放大,图片之间 ...

最新文章

  1. 【PHPWord】从模板创建Word
  2. 你要成为人才,先学习做伯乐
  3. 3.CSS布局奇淫巧计之-强大的负边距【转】
  4. 如何消除运动后肌肉酸痛 (DOMS - Delayed Onset Muscle Soreness)
  5. 什么是MIME?什么是MIME邮件?
  6. php证书格式,常用的证书格式转换 - niceguy_php的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. linux:vim中全选复制
  8. c# 从一组数中随机抽取一定个数_C#产生指定范围随机数的几种方法-亮术网
  9. springboot转发http请求_Spring Boot2 系列教程(八)Spring Boot 中配置 Https
  10. WebSockt面试题
  11. 计算机上的刷新快捷键,刷新快捷键是
  12. 身份证,邮箱等的验证
  13. 3.21 refused bequest
  14. 苦涩的技术我该怎么学?Akka 实战
  15. PHP-thinkPHP快速入门
  16. 每日一Tip:Jetbrains旗下集成环境(pycharm、IDEA等)使用Ctrl +鼠标滚轮上下滑放大缩小快捷键设置
  17. freetype用法
  18. 浅谈windows 编程中SendMessage函数的妙用!!!
  19. 计算机显卡有辐射吗,电脑的显卡辐射大吗
  20. Windows 10下安装Elementary OS双系统

热门文章

  1. 基于STM32F407四旋翼无人机 --- 姿态解算讲解(四元数)(叉积法融合陀螺仪数据和加速度数据)(五)
  2. 华为自带的输入法就有五大黑科技!现在知道不算晚
  3. Python数据可视化详解(5/5)--------面积图、圆环图和Python里的极坐标
  4. 用MDX进行同比及环比计算
  5. DPDK:insmod: ERROR: could not insert module igb_uio.ko: Invalid parameters
  6. 错题集(已解决):爬虫中碰到请求头header里有冒号‘:‘在key前面,直接调用requests报错valueError: Invalid header name b‘:authority‘
  7. 三维建模----相机参数
  8. c语言算网络节点介数,基于多目标优化的城市轨道交通网络抗毁性研究——以上海轨道交通为例...
  9. C and C++ Common Knowledge
  10. 蜗牛学院教材 12道经典案例题