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

时间:2020-11-11 10:45:03

标签: java android accessibilityservice

我正在创建一个调用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对我不起作用。

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

1 个答案:

答案 0 :(得分:0)

尝试使用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();