Java Whatsapp图像查看辅助功能服务(Android Studio)

Java Whatsapp图像查看辅助功能服务(Android Studio),java,android,android-studio,accessibility,whatsapp,Java,Android,Android Studio,Accessibility,Whatsapp,我有我的Whatsapp应用程序的可访问性代码,但是只有当我正常发送消息时,该服务才起作用。有人知道我如何让这项服务也用于图像发送吗 我的WhatsappAccessibilityService import android.accessibilityservice.AccessibilityService; import android.provider.Settings; import android.view.accessibility.AccessibilityEvent; import

我有我的Whatsapp应用程序的可访问性代码,但是只有当我正常发送消息时,该服务才起作用。有人知道我如何让这项服务也用于图像发送吗

我的WhatsappAccessibilityService

import android.accessibilityservice.AccessibilityService;
import android.provider.Settings;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;

import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;

import java.util.List;

public  class WhatAppAccessibilityService extends AccessibilityService {

    @Override
    public void onAccessibilityEvent (AccessibilityEvent event) {
        if (getRootInActiveWindow () == null) {
            return;
        }

        AccessibilityNodeInfoCompat rootInActiveWindow = AccessibilityNodeInfoCompat.wrap (getRootInActiveWindow ());

        // Whatsapp Message EditText id
        List<AccessibilityNodeInfoCompat> messageNodeList = rootInActiveWindow.findAccessibilityNodeInfosByViewId ("com.whatsapp:id/entry");
        if (messageNodeList == null || messageNodeList.isEmpty ()) {
            return;
        }

        // check if the whatsapp message EditText field is filled with text and ending with your suffix (explanation above)
        AccessibilityNodeInfoCompat messageField = messageNodeList.get (0);
        if (messageField.getText () == null || messageField.getText ().length () == 0
                || !messageField.getText ().toString ().endsWith (getApplicationContext ().getString (R.string.whatsapp_suffix))) { // So your service doesn't process any message, but the ones ending your apps suffix
            return;
        }

        // Whatsapp send button id
        List<AccessibilityNodeInfoCompat> sendMessageNodeInfoList = rootInActiveWindow.findAccessibilityNodeInfosByViewId ("com.whatsapp:id/send");
        if (sendMessageNodeInfoList == null || sendMessageNodeInfoList.isEmpty ()) {
            return;
        }

        AccessibilityNodeInfoCompat sendMessageButton = sendMessageNodeInfoList.get (0);
        if (!sendMessageButton.isVisibleToUser ()) {
            return;
        }

        // Now fire a click on the send button
        sendMessageButton.performAction (AccessibilityNodeInfo.ACTION_CLICK);

        // Now go back to your app by clicking on the Android back button twice:
        // First one to leave the conversation screen
        // Second one to leave whatsapp
        try {
            Thread.sleep (500); // hack for certain devices in which the immediate back click is too fast to handle
            performGlobalAction (GLOBAL_ACTION_BACK);
            Thread.sleep (500);  // same hack as above
        } catch (InterruptedException ignored) {}
        performGlobalAction (GLOBAL_ACTION_BACK);
    }

导入android.accessibilityservice.accessibilityservice;
导入android.provider.Settings;
导入android.view.accessibility.AccessibilityEvent;
导入android.view.accessibility.AccessibilityNodeInfo;
导入androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
导入java.util.List;
公共类WhatapAccessibilityService扩展了AccessibilityService{
@凌驾
AccessibilityEvent上的公共无效(AccessibilityEvent事件){
if(getRootInActiveWindow()==null){
返回;
}
AccessibilityNodeInfoCompat rootInActiveWindow=AccessibilityNodeInfoCompat.wrap(getRootInActiveWindow());
//Whatsapp消息编辑文本id
List messageNodeList=rootInActiveWindow.findAccessibilityNodeInfosByViewId(“com.whatsapp:id/entry”);
if(messageNodeList==null | | messageNodeList.isEmpty()){
返回;
}
//检查whatsapp message EditText字段是否用文本填充,并以您的后缀结尾(以上说明)
AccessibilityNodeInfoCompat messageField=messageNodeList.get(0);
if(messageField.getText()==null | | messageField.getText().length()==0
||!messageField.getText().toString().endsWith(getApplicationContext().getString(R.string.whatsapp_后缀)){//因此您的服务不会处理任何消息,但会处理以应用后缀结尾的消息
返回;
}
//Whatsapp发送按钮id
List sendMessageNodeInfo=rootInActiveWindow.findAccessibilityNodeInfosByViewId(“com.whatsapp:id/send”);
if(sendMessageNodeInfo==null | | sendMessageNodeInfo.isEmpty()){
返回;
}
AccessibilityNodeInfoCompat sendMessageButton=sendMessageNodeInfoList.get(0);
如果(!sendMessageButton.isVisibleToUser()){
返回;
}
//现在点击发送按钮
sendMessageButton.performAction(AccessibilityNodeInfo.ACTION\u单击);
//现在,单击Android后退按钮两次,返回应用程序:
//第一个离开对话屏幕的人
//第二个离开whatsapp的人
试一试{
Thread.sleep(500);//针对某些设备的黑客攻击,在这些设备中,立即返回的点击速度太快,无法处理
执行全局行动(全局行动返回);
Thread.sleep(500);//与上面的方法相同
}catch(InterruptedException忽略){}
执行全局行动(全局行动返回);
}