问题描述
我正在创建一个调用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();