Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android實現屏蔽微信拉黑和刪除聯系人功能示例

Android實現屏蔽微信拉黑和刪除聯系人功能示例

編輯:關於Android編程

Android實現屏蔽微信拉黑和刪除聯系人功能,廢話不多說,具體如下:

實現效果:

讓微信永遠彈不出那個刪除的對話框不就相當於屏蔽掉該功能了嗎?哈哈效果如圖:

實現原理:

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.
 * 屏蔽微信"刪除聯系人"和"拉黑"功能
 */

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開啟即可(或者在設置中查找輔助功能等)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持本站。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved