实现效果:

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

实现原理:

同样是利用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; @Override
public 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返回的响应时会调用。在整个生命周期会被调用多次。
*/
@Override
public void onInterrupt() {
Toast.makeText(this, "我快被终结了啊-----", Toast.LENGTH_SHORT).show();
} /**
* 服务开始连接
*/
@Override
protected void onServiceConnected() {
Toast.makeText(this, "服务已开启", Toast.LENGTH_SHORT).show();
super.onServiceConnected();
} /**
* 服务断开
*
* @param intent
* @return
*/
@Override
public boolean onUnbind(Intent intent) {
Toast.makeText(this, "服务已被关闭", Toast.LENGTH_SHORT).show();
return super.onUnbind(intent);
}
}

使用方法:

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

写在最后:

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

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

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

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

Android实现屏蔽微信拉黑和删除联系人功能的更多相关文章

  1. [转]ANDROID仿IOS微信滑动删除_SWIPELISTVIEW左滑删除例子

    转载:http://dwtedx.sinaapp.com/itshare_290.html 本例子实现了滑动删除ListView的Itemdemo的效果.大家都知道.这种创意是来源于IOS的.左滑删除 ...

  2. 被「李笑来老师」拉黑之「JavaScript微博自动转发的脚本」

    故事的背景如下图,李笑来 老师于10月19日在 知乎Live 开设 一小时建立终生受用的阅读操作系统 的讲座,他老人家看到大家伙报名踊跃,便在微博上发起了一个 猜数量赢取iPhone7 的活动. 因为 ...

  3. Android之自定义控件-下拉刷新

    实现效果: 图片素材:         --> 首先, 写先下拉刷新时的刷新布局 pull_to_refresh.xml: <resources> <string name=& ...

  4. Android 支付宝以及微信支付快速接入流程

    简介 随着移动支付的普及,越来越多的App采用第三发支付,在这里我们以支付宝为例,做一个快速集成! 一.Android快速实现支付宝支付 1.首先,我们需要前往支付宝开放平台,申请我们的支付功能:ht ...

  5. cocos2d-x C++ (Android)集成第三方微信分享

    ShareSDK Android for cocos2d-x 此文档为ShareSDK Android for cocos3.x的版本,如您集成的是2.X的版本文档请到这里:cocos2.x集成文档 ...

  6. Android ActionBar仿微信界面

    ActionBar仿微信界面 1.学习了别人的两篇关于ActionBar博客,在结合别人的文章来仿造一下微信的界面: 思路如下:1).利用ActionBar生成界面的头部,在用ActionBar的Ac ...

  7. 打造Android万能上拉下拉刷新框架--XRefreshView(三)

    转载请注明出处:http://blog.csdn.net/footballclub/ 打造Android万能上拉下拉刷新框架–XRefreshView(一) 打造Android万能上拉下拉刷新框架–X ...

  8. Android App 启动页(Splash)黑/白闪屏现象产生原因与解决办法(转)

    转载: Android App 启动页(Splash)黑/白闪屏现象产生原因与解决办法   首先感谢博主分享,本文作为学习记录 惊鸿一瞥 微信的启动页,相信大家都不陌生. 不知道大家有没有发现一个现象 ...

  9. android中自定义下拉框(转)

    android自带的下拉框好用不?我觉得有时候好用,有时候难有,项目规定这样的效果,自带的控件实现不了,那么只有我们自己来老老实实滴写一个新的了,其实最基本的下拉框就像一些资料填写时,点击的时候出现在 ...

随机推荐

  1. Docker Swarm集群

    Docker Swarm集群 IP 10.6.17.11  管理节点 IP 10.6.17.12   节点A IP 10.6.17.13   节点B IP 10.6.17.14   节点C 安装 Sw ...

  2. [转]ASP.NET Core 1 Deploy to IIS

    本文转自: http://webmodelling.com/webbits/aspnet/aspnet-deploy-iis.aspx 15 Sep 2016. This tutorial will ...

  3. OPENCV形态学算法-2

    一.漫水填充算法 该算法通过一个指定的种子点,来分析整张图片上的像素,并设置像素差异阈值,在阈值类的点,最后变成相同的颜色.该方法通过上下限和连通方式来达到不同的连通效果. 该方法常用与标记和分离图像 ...

  4. Linux ALSA声卡驱动之三:PCM设备的创建

    声明:本博内容均由http://blog.csdn.net/droidphone原创,转载请注明出处,谢谢! 1. PCM是什么 模数转换 模拟信号经过pcm(脉冲编码调制)后为pcm数据: PCM是 ...

  5. tp框架实现验证码验证

    //实现验证页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...

  6. iOS 生产证书 分类: ios相关 app相关 2015-05-22 14:49 175人阅读 评论(0) 收藏

    首先登陆https://developer.apple.com(99美元账号) 选择iOS Developer program 板块下的 Certificates,Identifiers & ...

  7. jQuery EasyUI学习资源汇总

    jQuery EasyUI学习资源汇总 EasyUi – 1.入门 EasyUi – 2.布局Layout + 3.登录界面 EasyUi – 4.datwagrid 学习Jquery EasyUI的 ...

  8. Powerbuilder编程技巧 如何获取网页的HTML源码

    直接使用的三种方式 1.  PB内部对象 Inet object 2.  API 函数 3.  Ole中的Microsfot Web 游览器对象 一.Inet object: 1.Inet objec ...

  9. JQuery Easy Ui dataGrid 数据表格 -->转

    转至: http://www.cnblogs.com/cnjava/archive/2013/01/21/2869876.html#events 数据表格 - DataGrid 内容 概况 使用方法 ...

  10. Swing 布局时 组件大小问题

    在JFrame中放置了几个JPanel ,想调整JPanel大小,一直无效. 问题在于: 因为JPanel A的四周没有添加任何组件,所以JPanel B会把JPanel A填满.这种情况想固定JPa ...