Auto.js/app/src/main/java/com/stardust/scriptdroid/autojs/AutoJs.java
2018-02-27 17:28:50 +08:00

128 lines
4.6 KiB
Java

package com.stardust.scriptdroid.autojs;
import android.app.Application;
import android.content.Context;
import com.stardust.autojs.core.console.GlobalStardustConsole;
import com.stardust.autojs.runtime.ScriptRuntime;
import com.stardust.autojs.runtime.accessibility.AccessibilityConfig;
import com.stardust.autojs.runtime.exception.ScriptException;
import com.stardust.autojs.runtime.api.Console;
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
import com.stardust.scriptdroid.App;
import com.stardust.scriptdroid.BuildConfig;
import com.stardust.scriptdroid.Pref;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.pluginclient.DevPluginService;
import com.stardust.scriptdroid.ui.log.LogActivity_;
import com.stardust.scriptdroid.ui.settings.SettingsActivity;
import com.stardust.scriptdroid.ui.settings.SettingsActivity_;
import com.stardust.view.accessibility.AccessibilityService;
import com.stardust.scriptdroid.tool.AccessibilityServiceTool;
/**
* Created by Stardust on 2017/4/2.
*/
public class AutoJs extends com.stardust.autojs.AutoJs {
private static AutoJs instance;
public static AutoJs getInstance() {
return instance;
}
public static void initInstance(Context context) {
instance = new AutoJs(context);
}
private AutoJs(final Context context) {
super(context);
getScriptEngineService().registerGlobalScriptExecutionListener(new ScriptExecutionGlobalListener());
}
@Override
protected Console createGlobalConsole() {
return new GlobalStardustConsole(getUiHandler()) {
@Override
public String println(int level, CharSequence charSequence) {
String log = super.println(level, charSequence);
DevPluginService.getInstance().log(log);
return log;
}
};
}
public void ensureAccessibilityServiceEnabled() {
if (AccessibilityService.getInstance() != null) {
return;
}
String errorMessage = null;
if (AccessibilityServiceTool.isAccessibilityServiceEnabled(App.getApp())) {
errorMessage = App.getApp().getString(R.string.text_auto_operate_service_enabled_but_not_running);
} else {
if (Pref.shouldEnableAccessibilityServiceByRoot()) {
if (!AccessibilityServiceTool.enableAccessibilityServiceByRootAndWaitFor(2000)) {
errorMessage = App.getApp().getString(R.string.text_enable_accessibility_service_by_root_timeout);
}
} else {
errorMessage = App.getApp().getString(R.string.text_no_accessibility_permission);
}
}
if (errorMessage != null) {
AccessibilityServiceTool.goToAccessibilitySetting();
throw new ScriptException(errorMessage);
}
}
@Override
public void waitForAccessibilityServiceEnabled() {
if (AccessibilityService.getInstance() != null) {
return;
}
String errorMessage = null;
if (AccessibilityServiceTool.isAccessibilityServiceEnabled(App.getApp())) {
errorMessage = App.getApp().getString(R.string.text_auto_operate_service_enabled_but_not_running);
} else {
if (Pref.shouldEnableAccessibilityServiceByRoot()) {
if (!AccessibilityServiceTool.enableAccessibilityServiceByRootAndWaitFor(2000)) {
errorMessage = App.getApp().getString(R.string.text_enable_accessibility_service_by_root_timeout);
}
} else {
errorMessage = App.getApp().getString(R.string.text_no_accessibility_permission);
}
}
if (errorMessage != null) {
AccessibilityServiceTool.goToAccessibilitySetting();
if (!com.stardust.scriptdroid.accessibility.AccessibilityService.waitForEnabled(-1)) {
throw new ScriptInterruptedException();
}
}
}
@Override
protected AccessibilityConfig createAccessibilityConfig() {
AccessibilityConfig config = super.createAccessibilityConfig();
if (BuildConfig.CHANNEL.equals("coolapk")) {
config.addWhiteList("com.coolapk.market");
}
return config;
}
@Override
protected Application getApplication() {
return App.getApp();
}
@Override
protected ScriptRuntime createRuntime() {
ScriptRuntime runtime = super.createRuntime();
runtime.putProperty("class.settings", SettingsActivity_.class);
runtime.putProperty("class.console", LogActivity_.class);
return runtime;
}
}