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.accessibility.AccessibilityConfig; import com.stardust.autojs.runtime.exception.ScriptException; import com.stardust.autojs.runtime.api.Console; 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.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 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(); } }