Android實(shí)現(xiàn)屏蔽微信拉黑和刪除聯(lián)系人功能示例
Android實(shí)現(xiàn)屏蔽微信拉黑和刪除聯(lián)系人功能,廢話不多說(shuō),具體如下:
實(shí)現(xiàn)效果:
讓微信永遠(yuǎn)彈不出那個(gè)刪除的對(duì)話框不就相當(dāng)于屏蔽掉該功能了嗎?哈哈效果如圖:

實(shí)現(xiàn)原理:
1.我們知道,其實(shí)微信每次刪除聯(lián)系人都會(huì)彈出此頁(yè)面

2.如果你對(duì)AccessibilityService有過(guò)了解或者有看過(guò)我之前的兩篇博客,你會(huì)知道,其實(shí)每次彈出這個(gè)框,都會(huì)觸發(fā)AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED這個(gè)事件,所以我們只要在每次觸發(fā)該事件的時(shí)候進(jìn)行判斷當(dāng)前頁(yè)面是不是處于刪除聯(lián)系人對(duì)話框,如果是,我們模擬點(diǎn)擊取消按鈕。思路什么的其實(shí)都很簡(jiǎn)單,可以直接看下代碼:
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.
* 屏蔽微信"刪除聯(lián)系人"和"拉黑"功能
*/
public class DeleteFailService extends AccessibilityService {
/**
* 判斷是不是刪除聯(lián)系人彈框
*/
private boolean isDeleteDialog;
/**
* 判斷是不是拉黑聯(lián)系人彈框
*/
private boolean isDefriendDialog;
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
int eventType = event.getEventType();
switch (eventType) {
//進(jìn)入聊天頁(yè)面會(huì)觸發(fā)該事件
case AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED:
//獲取當(dāng)前聊天頁(yè)面根布局
AccessibilityNodeInfo rootNode = getRootInActiveWindow();
//屏蔽微信"刪除聯(lián)系人"和"拉黑"功能
DeleteFail(rootNode);
break;
}
}
/**
* 遍歷所有控件,判斷是不是刪除聯(lián)系人界面或者拉黑界面,如果是則模擬點(diǎn)擊"取消",讓它消失。
*
* @param rootNode
*/
private void DeleteFail(AccessibilityNodeInfo rootNode) {
if(rootNode!=null){
for (int i = 0; i < rootNode.getChildCount(); i++) {
AccessibilityNodeInfo node = rootNode.getChild(i);
//判斷是不是刪除聯(lián)系人彈出框
if("android.widget.TextView".equals(node.getClassName().toString())){
if(!TextUtils.isEmpty(node.getText())){
if(node.getText().toString().contains("將同時(shí)刪除與該聯(lián)系人的聊天記錄")){
isDeleteDialog=true;
}
}
}
//判斷是不是拉黑聯(lián)系人彈出框
if("android.widget.TextView".equals(node.getClassName().toString())){
if(!TextUtils.isEmpty(node.getText())){
if(node.getText().toString().contains("你將不再收到對(duì)方的消息,并且你們相互看不到對(duì)方朋友圈的更新")){
isDefriendDialog=true;
}
}
}
//模擬點(diǎn)擊取消按鈕讓對(duì)話框消失
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);
}
}
}
}
}
}
}
/**
* 必須重寫(xiě)的方法:系統(tǒng)要中斷此service返回的響應(yīng)時(shí)會(huì)調(diào)用。在整個(gè)生命周期會(huì)被調(diào)用多次。
*/
@Override
public void onInterrupt() {
Toast.makeText(this, "我快被終結(jié)了啊-----", Toast.LENGTH_SHORT).show();
}
/**
* 服務(wù)開(kāi)始連接
*/
@Override
protected void onServiceConnected() {
Toast.makeText(this, "服務(wù)已開(kāi)啟", Toast.LENGTH_SHORT).show();
super.onServiceConnected();
}
/**
* 服務(wù)斷開(kāi)
*
* @param intent
* @return
*/
@Override
public boolean onUnbind(Intent intent) {
Toast.makeText(this, "服務(wù)已被關(guān)閉", Toast.LENGTH_SHORT).show();
return super.onUnbind(intent);
}
}
使用方法:
設(shè)置-輔助功能-無(wú)障礙-點(diǎn)擊WechatDeletefail開(kāi)啟即可(或者在設(shè)置中查找輔助功能等)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android ListView在Fragment中的使用示例詳解
這篇文章主要介紹了Android ListView在Fragment中的使用,因?yàn)楣ぷ饕恢痹谟胢vvm框架,因此這篇文章是基于mvvm框架寫(xiě)的,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09
Android進(jìn)程間大數(shù)據(jù)通信LocalSocket詳解
這篇文章主要為大家介紹了Android進(jìn)程間大數(shù)據(jù)通信LocalSocket詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
Flutter開(kāi)發(fā)之Widget自定義總結(jié)
這篇文章主要給大家介紹了關(guān)于Flutter開(kāi)發(fā)中Widget自定義的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Flutter具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
Android開(kāi)發(fā)之音視頻協(xié)議介紹
本文對(duì)音視頻的協(xié)議起源做詳細(xì)介紹,學(xué)習(xí)之后可以加深對(duì)音視頻知識(shí)的了解。這里的音視頻不僅針對(duì)Android平臺(tái),其他平臺(tái)也通用。2022-04-04
Android通過(guò)反射實(shí)現(xiàn)強(qiáng)制停止應(yīng)用程序的方法
這篇文章主要介紹了Android通過(guò)反射實(shí)現(xiàn)強(qiáng)制停止應(yīng)用程序的方法,涉及Android的反射機(jī)制與進(jìn)程操作的相關(guān)技巧,需要的朋友可以參考下2016-02-02
Android Studio的中文亂碼問(wèn)題解決方法
Android Studio安裝后發(fā)現(xiàn)所有的中文,不管是界面上的還是輸出的log中的中文都變成小框框,具體的解決方法如下,感興趣的朋友可以參考下哈2013-06-06
Android開(kāi)發(fā)之SeekBar基本使用及各種美觀樣式示例
這篇文章主要介紹了Android開(kāi)發(fā)之SeekBar基本使用及各種美觀樣式,結(jié)合實(shí)例形式分析了Android SeekBar控件的功能及樣式改變相關(guān)操作技巧,需要的朋友可以參考下2019-03-03

