From 33cdef21c659abfecda2ddb759edcc4d91f901cc Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Mon, 31 Jul 2017 10:15:39 +0800 Subject: [PATCH] add: auto() function and two mode of fetching rootInActiveWindow --- .../assets/sample/QQ与微信/QQ加群成员脚本.js | 2 +- .../assets/sample/QQ与微信/循环发送消息.js | 2 +- .../java/com/stardust/scriptdroid/Pref.java | 18 +--- .../stardust/scriptdroid/autojs/AutoJs.java | 96 +++++++++++-------- .../src/main/assets/javascript_engine_init.js | 11 +-- .../src/main/assets/modules/__automator__.js | 26 ++++- .../src/main/assets/modules/__selector__.js | 3 +- .../autojs/runtime/AbstractScriptRuntime.java | 23 ++++- .../autojs/runtime/AccessibilityBridge.java | 32 ++++++- .../autojs/runtime/api/UiSelector.java | 17 ++-- .../simpleaction/SimpleActionAutomator.java | 6 +- .../accessibility/AccessibilityService.java | 21 ++-- .../com/stardust/auojs/inrt/rt/AutoJs.java | 10 +- 13 files changed, 163 insertions(+), 104 deletions(-) diff --git a/app/src/main/assets/sample/QQ与微信/QQ加群成员脚本.js b/app/src/main/assets/sample/QQ与微信/QQ加群成员脚本.js index 92665414..8eb59b7a 100644 --- a/app/src/main/assets/sample/QQ与微信/QQ加群成员脚本.js +++ b/app/src/main/assets/sample/QQ与微信/QQ加群成员脚本.js @@ -1,4 +1,4 @@ -"auto"; +auto(); var 好友验证信息 = "AutoJs自动添加群好友"; var 延迟 = 500; diff --git a/app/src/main/assets/sample/QQ与微信/循环发送消息.js b/app/src/main/assets/sample/QQ与微信/循环发送消息.js index 51285167..d196a05f 100644 --- a/app/src/main/assets/sample/QQ与微信/循环发送消息.js +++ b/app/src/main/assets/sample/QQ与微信/循环发送消息.js @@ -1,4 +1,4 @@ -"auto"; +auto("fast"); toast("请打开一个聊天窗口"); diff --git a/app/src/main/java/com/stardust/scriptdroid/Pref.java b/app/src/main/java/com/stardust/scriptdroid/Pref.java index 492cad14..03555b3f 100644 --- a/app/src/main/java/com/stardust/scriptdroid/Pref.java +++ b/app/src/main/java/com/stardust/scriptdroid/Pref.java @@ -5,7 +5,6 @@ import android.content.SharedPreferences; import android.preference.PreferenceManager; import com.stardust.autojs.runtime.api.AutomatorConfig; -import com.stardust.automator.AccessibilityEventCommandHost; import com.stardust.scriptdroid.autojs.AutoJs; import org.mozilla.javascript.NativeArray; @@ -25,9 +24,7 @@ public class Pref { private static SharedPreferences.OnSharedPreferenceChangeListener onSharedPreferenceChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() { @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { - if (key.equals(getString(R.string.key_run_mode))) { - AutoJs.getInstance().getCommandHost().setRunMode(getRunModeFromValue(sharedPreferences.getString(key, null))); - } else if (key.equals(getString(R.string.key_guard_mode))) { + if (key.equals(getString(R.string.key_guard_mode))) { AutomatorConfig.setIsUnintendedGuardEnabled(sharedPreferences.getBoolean(getString(R.string.key_guard_mode), false)); } } @@ -37,19 +34,6 @@ public class Pref { AutomatorConfig.setIsUnintendedGuardEnabled(def().getBoolean(getString(R.string.key_guard_mode), false)); } - private static int getRunModeFromValue(String value) { - if (value == null) - return AccessibilityEventCommandHost.RUN_MODE_THREAD_POOL; - switch (value) { - case "KEY_THREAD_POOL": - return AccessibilityEventCommandHost.RUN_MODE_THREAD_POOL; - case "KEY_NEW_THREAD_EVERY_TIME": - return AccessibilityEventCommandHost.RUN_MODE_NEW_THREAD_EVERY_TIME; - default: - return AccessibilityEventCommandHost.RUN_MODE_SINGLE_THREAD; - } - } - private static SharedPreferences def() { return PreferenceManager.getDefaultSharedPreferences(App.getApp()); } diff --git a/app/src/main/java/com/stardust/scriptdroid/autojs/AutoJs.java b/app/src/main/java/com/stardust/scriptdroid/autojs/AutoJs.java index 0f10c6f2..484aa209 100644 --- a/app/src/main/java/com/stardust/scriptdroid/autojs/AutoJs.java +++ b/app/src/main/java/com/stardust/scriptdroid/autojs/AutoJs.java @@ -42,7 +42,7 @@ import com.stardust.view.accessibility.LayoutInspector; * Created by Stardust on 2017/4/2. */ -public class AutoJs implements AccessibilityBridge { +public class AutoJs { private static AutoJs instance; @@ -56,36 +56,29 @@ public class AutoJs implements AccessibilityBridge { private final AccessibilityActionRecorder mAccessibilityActionRecorder = new AccessibilityActionRecorder(); private final LayoutInspector mLayoutInspector = new LayoutInspector(); - private final ScriptEngineService mScriptEngineService; - private final AccessibilityInfoProvider mAccessibilityInfoProvider; + private final Context mContext; private final UiHandler mUiHandler; private final AppUtils mAppUtils; - private final ScreenCaptureRequester mScreenCaptureRequester = new ScreenCaptureRequester.AbstractScreenCaptureRequester() { - - @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) - @Override - public void request() { - Activity activity = mAppUtils.getCurrentActivity(); - if (activity instanceof OnActivityResultDelegate.DelegateHost) { - ScreenCaptureRequester requester = new ActivityScreenCaptureRequester( - ((OnActivityResultDelegate.DelegateHost) activity).getOnActivityResultDelegateMediator(), activity); - requester.setOnActivityResultCallback(mCallback); - requester.request(); - } else { - ScreenCaptureRequestActivity.request(mUiHandler.getContext(), mCallback); - } - } - - }; + private final AccessibilityInfoProvider mAccessibilityInfoProvider; + private final ScreenCaptureRequester mScreenCaptureRequester = new ScreenCaptureRequesterImpl(); + private final ScriptEngineService mScriptEngineService; private AutoJs(final Context context) { + mContext = context; mUiHandler = new UiHandler(context); mAppUtils = new AppUtils(context); mAccessibilityInfoProvider = new AccessibilityInfoProvider(context.getPackageManager()); - ScriptEngineManager manager = createScriptEngineManager(context); + mScriptEngineService = buildScriptEngineService(); + addAccessibilityServiceDelegates(); + mScriptEngineService.registerGlobalScriptExecutionListener(new ScriptExecutionGlobalListener()); + registerActivityLifecycleCallbacks(); + } + + private ScriptEngineService buildScriptEngineService() { + ScriptEngineManager manager = createScriptEngineManager(mContext); final Console globalConsole = new JraskaConsole(); - mScriptEngineService = new ScriptEngineServiceBuilder() + return new ScriptEngineServiceBuilder() .uiHandler(mUiHandler) .globalConsole(globalConsole) .engineManger(manager) @@ -96,21 +89,18 @@ public class AutoJs implements AccessibilityBridge { return new ScriptRuntime.Builder() .setConsole(new StardustConsole(mUiHandler, globalConsole)) .setScreenCaptureRequester(mScreenCaptureRequester) - .setAccessibilityBridge(AutoJs.this) + .setAccessibilityBridge(new AccessibilityBridgeImpl()) .setUiHandler(mUiHandler) .setAppUtils(mAppUtils) .setShellSupplier(new Supplier() { @Override public AbstractShell get() { - return new Shell(context, true); + return new Shell(mContext, true); } }).build(); } }) .build(); - addAccessibilityServiceDelegates(); - mScriptEngineService.registerGlobalScriptExecutionListener(new ScriptExecutionGlobalListener()); - registerActivityLifecycleCallbacks(); } private void registerActivityLifecycleCallbacks() { @@ -159,14 +149,16 @@ public class AutoJs implements AccessibilityBridge { return mLayoutInspector; } - @Nullable - @Override - public AccessibilityService getService() { - return AccessibilityService.getInstance(); + + public ScriptEngineService getScriptEngineService() { + return mScriptEngineService; } - @Override - public void ensureServiceEnabled() { + public AccessibilityInfoProvider getInfoProvider() { + return mAccessibilityInfoProvider; + } + + public void ensureAccessibilityServiceEnabled() { if (AccessibilityService.getInstance() == null) { String errorMessage = null; if (AccessibilityServiceUtils.isAccessibilityServiceEnabled(App.getApp(), AccessibilityService.class)) { @@ -187,12 +179,40 @@ public class AutoJs implements AccessibilityBridge { } } - @Override - public AccessibilityInfoProvider getInfoProvider() { - return mAccessibilityInfoProvider; + + private class AccessibilityBridgeImpl extends AccessibilityBridge { + + @Override + public void ensureServiceEnabled() { + AutoJs.this.ensureAccessibilityServiceEnabled(); + } + + @Nullable + @Override + public AccessibilityService getService() { + return AccessibilityService.getInstance(); + } + + @Override + public AccessibilityInfoProvider getInfoProvider() { + return mAccessibilityInfoProvider; + } + } - public ScriptEngineService getScriptEngineService() { - return mScriptEngineService; + private class ScreenCaptureRequesterImpl extends ScreenCaptureRequester.AbstractScreenCaptureRequester { + @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) + @Override + public void request() { + Activity activity = mAppUtils.getCurrentActivity(); + if (activity instanceof OnActivityResultDelegate.DelegateHost) { + ScreenCaptureRequester requester = new ActivityScreenCaptureRequester( + ((OnActivityResultDelegate.DelegateHost) activity).getOnActivityResultDelegateMediator(), activity); + requester.setOnActivityResultCallback(mCallback); + requester.request(); + } else { + ScreenCaptureRequestActivity.request(mContext, mCallback); + } + } } } diff --git a/autojs/src/main/assets/javascript_engine_init.js b/autojs/src/main/assets/javascript_engine_init.js index 225175f1..fe447a35 100644 --- a/autojs/src/main/assets/javascript_engine_init.js +++ b/autojs/src/main/assets/javascript_engine_init.js @@ -1,18 +1,17 @@ __runtime__.init(); -if(__engine_name__ == "rhino"){ - __importClass__ = importClass; - var importClass = function(pack){ +__importClass__ = importClass; +var importClass = function(pack){ if(typeof(pack) == "string"){ __importClass__(Packages[pack]); }else{ __importClass__(pack); } - } - var loadJar = function(path){ +} + +var loadJar = function(path){ __runtime__.loadJar(path); - } } __runtime__.bridges.setFunctionCaller(function(func, target, args){ diff --git a/autojs/src/main/assets/modules/__automator__.js b/autojs/src/main/assets/modules/__automator__.js index 37351dd8..6d425c68 100644 --- a/autojs/src/main/assets/modules/__automator__.js +++ b/autojs/src/main/assets/modules/__automator__.js @@ -97,12 +97,28 @@ module.exports = function(__runtime__, scope){ } automator.input = function(a, b){ - if(arguments.length == 1){ - return __runtime__.automator.appendText(__runtime__.automator.editable(-1), a); - }else{ - return __runtime__.automator.appendText(__runtime__.automator.editable(a), b); - } + if(arguments.length == 1){ + return __runtime__.automator.appendText(__runtime__.automator.editable(-1), a); + }else{ + return __runtime__.automator.appendText(__runtime__.automator.editable(a), b); } + } + + var modes = { + "normal": 0, + "fast": 1 + } + + scope.auto = function(mode){ + if(mode){ + if(typeof(mode) !== "string"){ + throw new TypeError("mode should be a string"); + } + mode = modes[mode.toLowerCase()]; + } + mode = mode || 0; + __runtime__.accessibilityBridge.setMode(mode); + } scope.__asGlobal__(__runtime__.automator, ['back', 'home', 'powerDialog', 'notifications', 'quickSettings', 'recents', 'splitScreen']); scope.__asGlobal__(automator, ['click', 'longClick', 'press', 'swipe', 'gesture', 'gestures', 'gestureAsync', 'gesturesAsync', 'scrollDown', 'scrollUp', 'input', 'setText']); diff --git a/autojs/src/main/assets/modules/__selector__.js b/autojs/src/main/assets/modules/__selector__.js index de5af861..28397e8c 100644 --- a/autojs/src/main/assets/modules/__selector__.js +++ b/autojs/src/main/assets/modules/__selector__.js @@ -16,7 +16,8 @@ module.exports = function(__runtime__, scope){ } return function(){ - return __runtime__.selector(scope.__engine__); + var s = __runtime__.selector(scope.__engine__); + return s; }; } diff --git a/autojs/src/main/java/com/stardust/autojs/runtime/AbstractScriptRuntime.java b/autojs/src/main/java/com/stardust/autojs/runtime/AbstractScriptRuntime.java index b2fc84ab..c618c21a 100644 --- a/autojs/src/main/java/com/stardust/autojs/runtime/AbstractScriptRuntime.java +++ b/autojs/src/main/java/com/stardust/autojs/runtime/AbstractScriptRuntime.java @@ -2,7 +2,6 @@ package com.stardust.autojs.runtime; import android.content.Context; import android.os.Build; -import android.os.Looper; import android.support.annotation.CallSuper; import com.stardust.autojs.engine.ScriptEngine; @@ -24,6 +23,8 @@ import com.stardust.util.UiHandler; import com.stardust.view.accessibility.AccessibilityInfoProvider; import java.lang.ref.WeakReference; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; /** * Created by Stardust on 2017/5/4. @@ -61,16 +62,19 @@ public abstract class AbstractScriptRuntime { @ScriptVariable public Timers timers; + @ScriptVariable + public AccessibilityBridge accessibilityBridge; + private Images images; private UiHandler mUiHandler; - private AccessibilityBridge mAccessibilityBridge; private static WeakReference applicationContext; + private Map mProperties = new ConcurrentHashMap<>(); public AbstractScriptRuntime(UiHandler uiHandler, Console console, AccessibilityBridge bridge, AppUtils appUtils, ScreenCaptureRequester screenCaptureRequester) { this.app = appUtils; this.console = console; - mAccessibilityBridge = bridge; + accessibilityBridge = bridge; mUiHandler = uiHandler; this.automator = new SimpleActionAutomator(bridge, this); this.info = bridge.getInfoProvider(); @@ -90,7 +94,7 @@ public abstract class AbstractScriptRuntime { if (loopers != null) throw new IllegalStateException("already initialized"); loopers = new Loopers(); - events = new Events(mUiHandler.getContext(), mAccessibilityBridge, bridges, loopers); + events = new Events(mUiHandler.getContext(), accessibilityBridge, bridges, loopers); timers = new Timers(bridges); } @@ -158,5 +162,16 @@ public abstract class AbstractScriptRuntime { return images; } + public Object getProperty(String key) { + return mProperties.get(key); + } + + public Object putProperty(String key, Object value) { + return mProperties.put(key, value); + } + + public Object removeProperty(String key) { + return mProperties.remove(key); + } } diff --git a/autojs/src/main/java/com/stardust/autojs/runtime/AccessibilityBridge.java b/autojs/src/main/java/com/stardust/autojs/runtime/AccessibilityBridge.java index 444d4d65..764efa6e 100644 --- a/autojs/src/main/java/com/stardust/autojs/runtime/AccessibilityBridge.java +++ b/autojs/src/main/java/com/stardust/autojs/runtime/AccessibilityBridge.java @@ -1,6 +1,8 @@ package com.stardust.autojs.runtime; +import android.content.Context; import android.support.annotation.Nullable; +import android.view.accessibility.AccessibilityNodeInfo; import com.stardust.view.accessibility.AccessibilityInfoProvider; import com.stardust.view.accessibility.AccessibilityService; @@ -9,15 +11,37 @@ import com.stardust.view.accessibility.AccessibilityService; * Created by Stardust on 2017/4/2. */ -public interface AccessibilityBridge { +public abstract class AccessibilityBridge { - void ensureServiceEnabled(); + public static final int MODE_NORMAL = 0; + public static final int MODE_FAST = 1; - AccessibilityInfoProvider getInfoProvider(); + private int mMode = MODE_NORMAL; + + + public abstract void ensureServiceEnabled(); @Nullable - AccessibilityService getService(); + public abstract AccessibilityService getService(); + @Nullable + public AccessibilityNodeInfo getRootInActiveWindow() { + AccessibilityService service = getService(); + if (service == null) + return null; + if (mMode == MODE_FAST) { + return service.fastRootInActiveWindow(); + } + return service.getRootInActiveWindow(); + } + + + public abstract AccessibilityInfoProvider getInfoProvider(); + + + public void setMode(int mode) { + mMode = mode; + } } diff --git a/autojs/src/main/java/com/stardust/autojs/runtime/api/UiSelector.java b/autojs/src/main/java/com/stardust/autojs/runtime/api/UiSelector.java index 0db8a4ed..50f1c28d 100644 --- a/autojs/src/main/java/com/stardust/autojs/runtime/api/UiSelector.java +++ b/autojs/src/main/java/com/stardust/autojs/runtime/api/UiSelector.java @@ -1,9 +1,9 @@ package com.stardust.autojs.runtime.api; -import android.accessibilityservice.AccessibilityService; import android.content.Intent; import android.net.Uri; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.util.Log; import android.view.accessibility.AccessibilityNodeInfo; @@ -17,6 +17,7 @@ import com.stardust.automator.UiObjectCollection; import com.stardust.automator.filter.DfsFilter; import com.stardust.util.DeveloperUtils; import com.stardust.view.accessibility.AccessibilityNodeInfoAllocator; +import com.stardust.view.accessibility.AccessibilityService; import org.mozilla.javascript.NativeArray; @@ -58,6 +59,8 @@ import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat. public class UiSelector extends UiGlobalSelector { + + private static final String TAG = "UiSelector"; private AccessibilityBridge mAccessibilityBridge; @@ -80,16 +83,14 @@ public class UiSelector extends UiGlobalSelector { Log.d(TAG, "isSelfPackage return null"); return UiObjectCollection.EMPTY; } - AccessibilityService service = mAccessibilityBridge.getService(); - if (service != null) { - AccessibilityNodeInfo root = service.getRootInActiveWindow(); - if (root != null) { - return findOf(UiObject.createRoot(root, mAllocator)); - } + AccessibilityNodeInfo root = mAccessibilityBridge.getRootInActiveWindow(); + if (root == null) { + return UiObjectCollection.EMPTY; } - return UiObjectCollection.EMPTY; + return findOf(UiObject.createRoot(root, mAllocator)); } + private void ensureAccessibilityServiceEnabled() { mAccessibilityBridge.ensureServiceEnabled(); } diff --git a/autojs/src/main/java/com/stardust/autojs/runtime/simpleaction/SimpleActionAutomator.java b/autojs/src/main/java/com/stardust/autojs/runtime/simpleaction/SimpleActionAutomator.java index 0497c7a7..5772ce77 100644 --- a/autojs/src/main/java/com/stardust/autojs/runtime/simpleaction/SimpleActionAutomator.java +++ b/autojs/src/main/java/com/stardust/autojs/runtime/simpleaction/SimpleActionAutomator.java @@ -5,6 +5,7 @@ import android.accessibilityservice.GestureDescription; import android.graphics.Rect; import android.os.Build; import android.os.Handler; +import android.support.annotation.NonNull; import android.support.annotation.RequiresApi; import android.util.Log; import android.view.accessibility.AccessibilityNodeInfo; @@ -254,10 +255,7 @@ public class SimpleActionAutomator { Log.d(TAG, "performAction: running package is self. return false"); return false; } - AccessibilityService service = mAccessibilityBridge.getService(); - if (service == null) - return false; - AccessibilityNodeInfo root = service.getRootInActiveWindow(); + AccessibilityNodeInfo root = mAccessibilityBridge.getRootInActiveWindow(); if (root == null) return false; Log.v(TAG, "performAction: " + simpleAction + " root = " + root); diff --git a/automator/src/main/java/com/stardust/view/accessibility/AccessibilityService.java b/automator/src/main/java/com/stardust/view/accessibility/AccessibilityService.java index 929e0d37..2c373246 100644 --- a/automator/src/main/java/com/stardust/view/accessibility/AccessibilityService.java +++ b/automator/src/main/java/com/stardust/view/accessibility/AccessibilityService.java @@ -3,6 +3,7 @@ package com.stardust.view.accessibility; import android.content.Context; import android.os.Build; import android.os.Handler; +import android.support.annotation.Nullable; import android.util.Log; import android.view.KeyEvent; import android.view.accessibility.AccessibilityEvent; @@ -39,8 +40,8 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi private static boolean containsAllEventTypes = false; private static final Set eventTypes = new HashSet<>(); private OnKeyListener.Observer mOnKeyObserver = new OnKeyListener.Observer(); - private Handler mHandler; private ExecutorService mKeyEventExecutor; + private AccessibilityNodeInfo mFastRootInActiveWindow; public static void addDelegate(int uniquePriority, AccessibilityDelegate delegate) { mDelegates.put(uniquePriority, delegate); @@ -64,6 +65,11 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi Log.v(TAG, "onAccessibilityEvent: " + event); if (!containsAllEventTypes && !eventTypes.contains(event.getEventType())) return; + int type = event.getEventType(); + if (type == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED || type == AccessibilityEvent.TYPE_VIEW_HOVER_ENTER + || type == AccessibilityEvent.TYPE_VIEW_HOVER_EXIT) { + mFastRootInActiveWindow = super.getRootInActiveWindow(); + } for (Map.Entry entry : mDelegates.entrySet()) { AccessibilityDelegate delegate = entry.getValue(); Set types = delegate.getEventTypes(); @@ -127,17 +133,13 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi LOCK.lock(); ENABLED.signalAll(); LOCK.unlock(); - mHandler = new Handler(); // FIXME: 2017/2/12 有时在无障碍中开启服务后这里不会调用服务也不会运行,安卓的BUG??? } - private AccessibilityNodeInfo superGetRootInActiveWindow() { - try { - return super.getRootInActiveWindow(); - } catch (IllegalStateException e) { - e.printStackTrace(); - return null; - } + + @Nullable + public AccessibilityNodeInfo fastRootInActiveWindow() { + return mFastRootInActiveWindow; } public static boolean disable() { @@ -162,4 +164,5 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi public static OnKeyListener.Observer getStickOnKeyObserver() { return stickOnKeyObserver; } + } diff --git a/inrt/src/main/java/com/stardust/auojs/inrt/rt/AutoJs.java b/inrt/src/main/java/com/stardust/auojs/inrt/rt/AutoJs.java index 55fc2bcd..48df5344 100644 --- a/inrt/src/main/java/com/stardust/auojs/inrt/rt/AutoJs.java +++ b/inrt/src/main/java/com/stardust/auojs/inrt/rt/AutoJs.java @@ -35,7 +35,7 @@ import com.stardust.view.accessibility.AccessibilityServiceUtils; * Created by Stardust on 2017/7/1. */ -public class AutoJs implements AccessibilityBridge { +public class AutoJs { private static AutoJs instance; @@ -84,11 +84,12 @@ public class AutoJs implements AccessibilityBridge { .runtime(new Supplier() { @Override - public com.stardust.autojs.runtime.ScriptRuntime get() { + public ScriptRuntime get() { return new ScriptRuntime.Builder() .setConsole(new StardustConsole(mUiHandler)) .setScreenCaptureRequester(mScreenCaptureRequester) - .setAccessibilityBridge(AutoJs.this) + // TODO: 2017/7/31 + .setAccessibilityBridge(null) .setUiHandler(mUiHandler) .setAppUtils(mAppUtils) .setShellSupplier(new Supplier() { @@ -134,12 +135,10 @@ public class AutoJs implements AccessibilityBridge { } @Nullable - @Override public AccessibilityService getService() { return AccessibilityService.getInstance(); } - @Override public void ensureServiceEnabled() { Context context = mApplication.getApplicationContext(); if (AccessibilityService.getInstance() == null) { @@ -154,7 +153,6 @@ public class AutoJs implements AccessibilityBridge { } } - @Override public AccessibilityInfoProvider getInfoProvider() { return mAccessibilityInfoProvider; }