diff --git a/autojs/src/main/java/com/stardust/autojs/ScriptEngineService.java b/autojs/src/main/java/com/stardust/autojs/ScriptEngineService.java index 756bfc7a..3e3fe589 100644 --- a/autojs/src/main/java/com/stardust/autojs/ScriptEngineService.java +++ b/autojs/src/main/java/com/stardust/autojs/ScriptEngineService.java @@ -123,22 +123,19 @@ public class ScriptEngineService { task.setExecutionListener(mScriptExecutionObserver); } ScriptSource source = task.getSource(); - if (source instanceof JavaScriptSource && isUiMode((JavaScriptSource) source)) { - return ScriptExecuteActivity.execute(mContext, mScriptEngineManager, task); - } else { - RunnableScriptExecution r = new RunnableScriptExecution(mScriptEngineManager, task); - if (task.getConfig().runInNewThread) { - new ThreadCompat(r).start(); - } else { - r.run(); + if (source instanceof JavaScriptSource) { + int mode = ((JavaScriptSource) source).getExecutionMode(); + if ((mode & JavaScriptSource.EXECUTION_MODE_UI) != 0) { + return ScriptExecuteActivity.execute(mContext, mScriptEngineManager, task); } - return r; } - } - - private boolean isUiMode(JavaScriptSource source) { - int mode = source.getExecutionMode(); - return (mode & JavaScriptSource.EXECUTION_MODE_UI) != 0; + RunnableScriptExecution r = new RunnableScriptExecution(mScriptEngineManager, task); + if (task.getConfig().runInNewThread) { + new ThreadCompat(r).start(); + } else { + r.run(); + } + return r; } public ScriptExecution execute(ScriptSource source, ScriptExecutionListener listener, ExecutionConfig config) { diff --git a/autojs/src/main/java/com/stardust/autojs/engine/JavaScriptEngine.java b/autojs/src/main/java/com/stardust/autojs/engine/JavaScriptEngine.java index c1f5c811..894c01f0 100644 --- a/autojs/src/main/java/com/stardust/autojs/engine/JavaScriptEngine.java +++ b/autojs/src/main/java/com/stardust/autojs/engine/JavaScriptEngine.java @@ -1,5 +1,7 @@ package com.stardust.autojs.engine; +import android.support.annotation.CallSuper; + import com.stardust.autojs.execution.ScriptExecution; import com.stardust.autojs.runtime.ScriptRuntime; import com.stardust.autojs.script.JavaScriptSource; @@ -11,6 +13,15 @@ import com.stardust.autojs.script.JavaScriptSource; public abstract class JavaScriptEngine extends ScriptEngine.AbstractScriptEngine { private ScriptRuntime mRuntime; + @Override + public Object execute(JavaScriptSource scriptSource) { + if ((scriptSource.getExecutionMode() & JavaScriptSource.EXECUTION_MODE_AUTO) != 0) { + getRuntime().ensureAccessibilityServiceEnabled(); + } + return doExecution(scriptSource); + } + + protected abstract Object doExecution(JavaScriptSource scriptSource); public ScriptRuntime getRuntime() { return mRuntime; diff --git a/autojs/src/main/java/com/stardust/autojs/engine/RhinoJavaScriptEngine.java b/autojs/src/main/java/com/stardust/autojs/engine/RhinoJavaScriptEngine.java index 4218c059..d339d3ee 100644 --- a/autojs/src/main/java/com/stardust/autojs/engine/RhinoJavaScriptEngine.java +++ b/autojs/src/main/java/com/stardust/autojs/engine/RhinoJavaScriptEngine.java @@ -55,7 +55,7 @@ public class RhinoJavaScriptEngine extends JavaScriptEngine { } @Override - public Object execute(JavaScriptSource source) { + public Object doExecution(JavaScriptSource source) { Reader reader = source.getNonNullScriptReader(); try { reader = preprocess(reader);