Android實(shí)現(xiàn)屏蔽微信拉黑和刪除聯(lián)系人功能示例
Android實(shí)現(xiàn)屏蔽微信拉黑和刪除聯(lián)系人功能,廢話不多說,具體如下:
實(shí)現(xiàn)效果:
讓微信永遠(yuǎn)彈不出那個(gè)刪除的對(duì)話框不就相當(dāng)于屏蔽掉該功能了嗎?哈哈效果如圖:
實(shí)現(xiàn)原理:
1.我們知道,其實(shí)微信每次刪除聯(lián)系人都會(huì)彈出此頁(yè)面
2.如果你對(duì)AccessibilityService有過了解或者有看過我之前的兩篇博客,你會(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); } } } } } } } /** * 必須重寫的方法:系統(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ù)開始連接 */ @Override protected void onServiceConnected() { Toast.makeText(this, "服務(wù)已開啟", Toast.LENGTH_SHORT).show(); super.onServiceConnected(); } /** * 服務(wù)斷開 * * @param intent * @return */ @Override public boolean onUnbind(Intent intent) { Toast.makeText(this, "服務(wù)已被關(guān)閉", Toast.LENGTH_SHORT).show(); return super.onUnbind(intent); } }
使用方法:
設(shè)置-輔助功能-無障礙-點(diǎn)擊WechatDeletefail開啟即可(或者在設(shè)置中查找輔助功能等)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android開發(fā)中的9個(gè)常見錯(cuò)誤和解決方法
這篇文章主要介紹了Android開發(fā)中的9個(gè)常見錯(cuò)誤和解決方法,這是Android開發(fā)中最常見的9個(gè)錯(cuò)誤,經(jīng)過各種各樣的整理,以及和熱心網(wǎng)友討論總結(jié)而來,需要的朋友可以參考下2015-01-01php 異步調(diào)用方法實(shí)現(xiàn)示例
客戶端與服務(wù)器端是通過HTTP協(xié)議進(jìn)行連接通訊,客戶端發(fā)起請(qǐng)求,服務(wù)器端接收到請(qǐng)求后執(zhí)行處理,并返回處理結(jié)果2014-01-01Android UI動(dòng)態(tài)設(shè)置帶有Stroke漸變色背景Drawable
這篇文章主要為大家介紹了Android UI動(dòng)態(tài)設(shè)置帶有Stroke漸變色背景Drawable,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01Android實(shí)現(xiàn)在ServiceManager中加入自定義服務(wù)的方法詳解
這篇文章主要介紹了Android實(shí)現(xiàn)在ServiceManager中加入自定義服務(wù)的方法,結(jié)合實(shí)例形式分析了Android開發(fā)中ServiceManager自定義服務(wù)的相關(guān)創(chuàng)建與使用方法,需要的朋友可以參考下2017-08-08Android編程實(shí)現(xiàn)根據(jù)經(jīng)緯度查詢地址并對(duì)獲取的json數(shù)據(jù)進(jìn)行解析的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)根據(jù)經(jīng)緯度查詢地址并對(duì)獲取的json數(shù)據(jù)進(jìn)行解析的方法,結(jié)合實(shí)例形式分析了Android的經(jīng)緯度地址解析與json格式數(shù)據(jù)操作相關(guān)技巧,需要的朋友可以參考下2017-02-02Android自定義popupwindow實(shí)例代碼
這篇文章主要為大家詳細(xì)介紹了Android自定義popupwindow實(shí)例代碼,popupwindow彈出菜單效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11Android添加自定義下拉刷新布局阻尼滑動(dòng)懸停彈動(dòng)畫效果
這篇文章主要為大家介紹了Android添加自定義下拉刷新布局阻尼滑動(dòng)懸停彈動(dòng)畫效果詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02