辅助功能服务-performGlobalAction无法正常工作?

问题描述

我正在创建一个调用Accessibility的Android performGlobalAction()服务

import android.accessibilityservice.AccessibilityService;
import android.content.Intent;
import android.view.accessibility.AccessibilityWindowInfo;
import android.view.accessibility.AccessibilityEvent;
import android.content.Contextwrapper;
import android.accessibilityservice.AccessibilityServiceInfo;
import android.view.accessibility.AccessibilityNodeInfo;
    
public class RootChecker extends AccessibilityService {


    @Override
    protected void onServiceConnected() {
        super.onServiceConnected();
    }


    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
    }

    @Override
    public void onInterrupt() {
    }

    public void BackKey() {
        performGlobalAction(GLOBAL_ACTION_BACK);
}
}

我正在从另一个名为TouchViewManager的类中调用它。

RootChecker rc = new RootChecker();


public void PressBack(){
      rc.BackKey();
}

我的服务类名为TouchWindowService

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.app.Activity;
import android.util.Log;


public class TouchWindowService extends Service {

    private static final String TAG = "TouchWindowService";
    private TouchViewManager touchViewManager;

    @Override
    public void onCreate() {
     touchViewManager = TouchViewManager.getInstance();
        super.onCreate();
    }

    @Override
    public int onStartCommand(Intent intent,int flags,int startId) {
        return super.onStartCommand(intent,flags,startId);
    }


    @Override
    public void onDestroy() {
        super.onDestroy();
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }


}

我遵循了指南,并在AndroidManifest.xml中添加了必要的服务

<service android:name=".TouchWindowService"/>

        <service android:name=".RootChecker"
                 android:label="@string/accessibility_service_label"
                 android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService" />
            </intent-filter>

            <Meta-data
                    android:name="android.accessibilityservice"
                    android:resource="@xml/accessibility_service_config" />

        </service>

accessibilty_service_config代码-

<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
                       android:description="@string/accessibility_service_description"
                       android:accessibilityEventTypes="typeAllMask"
                       android:accessibilityFeedbackType="FeedbackGeneric"
                       android:accessibilityFlags="flagDefault"
                       android:canRetrieveWindowContent="true"
        />

我尝试过的事情 我的应用程序已启用“我的辅助功能”。 另外,我在Thread.sleep(1000);之前使用performGlobalAction();,但这对我不起作用。

问题 AccessibilityService对我不起作用。

问题 当我单击按钮时,没有任何反应。 有什么我想念的东西,如进口。

解决方法

尝试使用BroadcastReceivers与RootChecker进行通信或在RootChecker中创建一个单例以访问其方法

private static RootChecker instance;

@Override
protected void onServiceConnected() {
    super.onServiceConnected();
    instance = this;
}

public static RootChecker getInstance() {
    return instance;
}

并使用它来访问您的AccessibilityService

RootChecker.getInstance().BackKey();

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...