diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/build/BuildActivity.java b/app/src/main/java/com/stardust/scriptdroid/ui/build/BuildActivity.java index 03897f37..519ae598 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/build/BuildActivity.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/build/BuildActivity.java @@ -1,6 +1,9 @@ package com.stardust.scriptdroid.ui.build; import android.annotation.SuppressLint; +import android.app.ListActivity; +import android.app.PendingIntent; +import android.content.Intent; import android.util.Log; import android.widget.EditText; import android.widget.Toast; @@ -76,6 +79,12 @@ public class BuildActivity extends BaseActivity implements AutoJsApkBuilder.Prog mAppName.setText(file.getSimplifiedName()); } + @Override + protected void onNewIntent(Intent intent) { + super.onNewIntent(intent); + + } + @Click(R.id.select_source) void selectSourceFilePath() { String initialDir = new File(mSourcePath.getText().toString()).getParent(); diff --git a/autojs/src/main/AndroidManifest.xml b/autojs/src/main/AndroidManifest.xml index 2c32768d..7f096fb3 100644 --- a/autojs/src/main/AndroidManifest.xml +++ b/autojs/src/main/AndroidManifest.xml @@ -5,8 +5,9 @@ - - + diff --git a/get_global_functions.py b/get_global_functions.py deleted file mode 100644 index c9292321..00000000 --- a/get_global_functions.py +++ /dev/null @@ -1,25 +0,0 @@ -import re - -def get_functions(path): - list = [] - with open(path) as f: - for line in f: - func = get_function_or_null(line) - if func: - list.append(func) - return to_str(list) - -def to_str(list): - return str(list).replace("'", '"') - -def get_function_or_null(line): - m = re.match(r'^var\s(\S+)\s=', line) - if m and not m.group(1).startswith('__'): - return m.group(1) - else: - return None - -if __name__ == "__main__": - print(get_functions(r'autojs\src\main\assets\javascript_engine_init.js')) - print(get_functions(r'app\src\main\assets\js\autojs_init.js')) - \ No newline at end of file diff --git a/inrt/src/main/AndroidManifest.xml b/inrt/src/main/AndroidManifest.xml index 9d3358ec..3f5e329d 100644 --- a/inrt/src/main/AndroidManifest.xml +++ b/inrt/src/main/AndroidManifest.xml @@ -4,6 +4,9 @@ package="com.stardust.auojs.inrt"> + + + ", js); - AutoJs.getInstance().getScriptEngineService().execute(source); - } catch (IOException e) { - e.printStackTrace(); + setupView(); + checkPermission(Manifest.permission.READ_EXTERNAL_STORAGE); + runScript(); + } + + private void setupView() { + ConsoleView consoleView = new ConsoleView(this); + consoleView.setConsole(AutoJs.getInstance().getGlobalConsole()); + setContentView(consoleView); + } + + + private void runScript() { + new Thread(new Runnable() { + @Override + public void run() { + try { + String js = PFiles.read(getAssets().open("script.js")); + StringScriptSource source = new StringScriptSource("main", js); + AutoJs.getInstance().getScriptEngineService().execute(source); + } catch (Exception e) { + AutoJs.getInstance().getGlobalConsole().log(e); + } + } + }).start(); + } + + protected void checkPermission(String... permissions) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + String[] requestPermissions = getRequestPermissions(permissions); + if (requestPermissions.length > 0) { + requestPermissions(requestPermissions, PERMISSION_REQUEST_CODE); + } + } else { + int[] grantResults = new int[permissions.length]; + Arrays.fill(grantResults, PERMISSION_GRANTED); + onRequestPermissionsResult(PERMISSION_REQUEST_CODE, permissions, grantResults); } } - private void checkPermissions() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 11124); + + @RequiresApi(api = Build.VERSION_CODES.M) + private String[] getRequestPermissions(String[] permissions) { + List list = new ArrayList<>(); + for (String permission : permissions) { + if (checkSelfPermission(permission) == PERMISSION_DENIED) { + list.add(permission); + } } + return list.toArray(new String[list.size()]); } + } 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 13d61da7..23c360d3 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 @@ -14,6 +14,7 @@ import com.stardust.auojs.inrt.R; import com.stardust.autojs.ScriptEngineService; import com.stardust.autojs.ScriptEngineServiceBuilder; import com.stardust.autojs.core.accessibility.AccessibilityBridge; +import com.stardust.autojs.core.console.GlobalStardustConsole; import com.stardust.autojs.core.inputevent.InputEventObserver; import com.stardust.autojs.core.record.accessibility.AccessibilityActionRecorder; import com.stardust.autojs.engine.LoopBasedJavaScriptEngine; @@ -62,30 +63,32 @@ public class AutoJs { private final AccessibilityActionRecorder mAccessibilityActionRecorder = new AccessibilityActionRecorder(); private final NotificationListener.Observer mNotificationObserver; private ScriptEngineManager mScriptEngineManager; - private final LayoutInspector mLayoutInspector = new LayoutInspector(); private final Context mContext; private final UiHandler mUiHandler; private final AppUtils mAppUtils; private final AccessibilityInfoProvider mAccessibilityInfoProvider; private final ScreenCaptureRequester mScreenCaptureRequester = new ScreenCaptureRequesterImpl(); private final ScriptEngineService mScriptEngineService; - private final Console mGlobalConsole; + private final StardustConsole mGlobalConsole; private AutoJs(final Context context) { mContext = context; mUiHandler = new UiHandler(context); mAppUtils = new AppUtils(context); - mGlobalConsole = new NoOpConsole(); + mGlobalConsole = new GlobalStardustConsole(mUiHandler); mNotificationObserver = new NotificationListener.Observer(context); mAccessibilityInfoProvider = new AccessibilityInfoProvider(context.getPackageManager()); mScriptEngineService = buildScriptEngineService(); addAccessibilityServiceDelegates(); - //mScriptEngineService.registerGlobalScriptExecutionListener(new ScriptExecutionGlobalListener()); registerActivityLifecycleCallbacks(); InputEventObserver.initGlobal(context); } + public StardustConsole getGlobalConsole() { + return mGlobalConsole; + } + private ScriptEngineService buildScriptEngineService() { initScriptEngineManager(); return new ScriptEngineServiceBuilder() @@ -153,50 +156,29 @@ public class AutoJs { AccessibilityService.addDelegate(300, mAccessibilityActionRecorder); } - public AccessibilityActionRecorder getAccessibilityActionRecorder() { - return mAccessibilityActionRecorder; - } - - public AppUtils getAppUtils() { - return mAppUtils; - } - - public UiHandler getUiHandler() { - return mUiHandler; - } - - public LayoutInspector getLayoutInspector() { - return mLayoutInspector; - } - - public ScriptEngineService getScriptEngineService() { return mScriptEngineService; } - public AccessibilityInfoProvider getInfoProvider() { - return mAccessibilityInfoProvider; - } - public void ensureAccessibilityServiceEnabled() { if (AccessibilityService.getInstance() == null) { - String errorMessage = null; - if (AccessibilityServiceUtils.isAccessibilityServiceEnabled(App.getApp(), sAccessibilityServiceClass)) { - errorMessage = App.getApp().getString(R.string.text_auto_operate_service_enabled_but_not_running); - } else { - if (true) { - if (!AccessibilityServiceTool.enableAccessibilityServiceByRootAndWaitFor(App.getApp(), 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); + String errorMessage = getErrorMessage(); + AccessibilityServiceTool.goToAccessibilitySetting(); + throw new ScriptException(errorMessage); + } + } + + private String getErrorMessage() { + if (AccessibilityServiceUtils.isAccessibilityServiceEnabled(App.getApp(), sAccessibilityServiceClass)) { + return App.getApp().getString(R.string.text_auto_operate_service_enabled_but_not_running); + } else { + if (true) { + if (!AccessibilityServiceTool.enableAccessibilityServiceByRootAndWaitFor(App.getApp(), 2000)) { + return App.getApp().getString(R.string.text_enable_accessibility_service_by_root_timeout); } } - if (errorMessage != null) { - AccessibilityServiceTool.goToAccessibilitySetting(); - throw new ScriptException(errorMessage); - } } + return App.getApp().getString(R.string.text_no_accessibility_permission); }