diff --git a/autojs/src/main/java/com/stardust/autojs/execution/ExecutionConfig.java b/autojs/src/main/java/com/stardust/autojs/execution/ExecutionConfig.java index c1f0f148..d020d7ba 100644 --- a/autojs/src/main/java/com/stardust/autojs/execution/ExecutionConfig.java +++ b/autojs/src/main/java/com/stardust/autojs/execution/ExecutionConfig.java @@ -20,6 +20,7 @@ public class ExecutionConfig implements Serializable { public long interval = 0; public int loopTimes = 1; private Map mArguments = new HashMap<>(); + private int mIntentFlags = 0; public static ExecutionConfig getDefault() { return new ExecutionConfig(); @@ -32,6 +33,15 @@ public class ExecutionConfig implements Serializable { return this; } + public int getIntentFlags() { + return mIntentFlags; + } + + public ExecutionConfig setIntentFlags(int intentFlags) { + mIntentFlags = intentFlags; + return this; + } + public ExecutionConfig requirePath(String... requirePath) { mRequirePath = new ArrayList<>(Arrays.asList(requirePath)); if (mExecutePath != null) { diff --git a/autojs/src/main/java/com/stardust/autojs/execution/ScriptExecuteActivity.java b/autojs/src/main/java/com/stardust/autojs/execution/ScriptExecuteActivity.java index 065a82c6..ccc5e862 100644 --- a/autojs/src/main/java/com/stardust/autojs/execution/ScriptExecuteActivity.java +++ b/autojs/src/main/java/com/stardust/autojs/execution/ScriptExecuteActivity.java @@ -49,7 +49,8 @@ public class ScriptExecuteActivity extends AppCompatActivity { ActivityScriptExecution execution = new ActivityScriptExecution(manager, task); Intent i = new Intent(context, ScriptExecuteActivity.class) .putExtra(EXTRA_EXECUTION_ID, execution.getId()) - .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + .addFlags(task.getConfig().getIntentFlags()); context.startActivity(i); return execution; } @@ -140,7 +141,7 @@ public class ScriptExecuteActivity extends AppCompatActivity { protected void onDestroy() { super.onDestroy(); Log.d(LOG_TAG, "onDestroy"); - if(mScriptEngine != null){ + if (mScriptEngine != null) { mScriptEngine.put("activity", null); mScriptEngine.setTag("activity", null); mScriptEngine.destroy(); diff --git a/common/src/main/java/com/stardust/util/ClipboardUtil.java b/common/src/main/java/com/stardust/util/ClipboardUtil.java index ba7abe38..9165d1e9 100644 --- a/common/src/main/java/com/stardust/util/ClipboardUtil.java +++ b/common/src/main/java/com/stardust/util/ClipboardUtil.java @@ -18,7 +18,8 @@ public class ClipboardUtil { } public static CharSequence getClip(Context context) { - return ((ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE)).getPrimaryClip().getItemAt(0).getText(); + ClipData clip = ((ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE)).getPrimaryClip(); + return (clip == null || clip.getItemCount() == 0) ? null : clip.getItemAt(0).getText(); } @NonNull diff --git a/inrt/src/main/assets/project/main.js b/inrt/src/main/assets/project/main.js index 9d1ce76c..7d0fb5ae 100644 --- a/inrt/src/main/assets/project/main.js +++ b/inrt/src/main/assets/project/main.js @@ -1 +1,2 @@ +"ui"; console.error("打包出错啦~ 使用文件夹打包请把主脚本改名为main.js"); diff --git a/inrt/src/main/java/com/stardust/auojs/inrt/launch/AssetsProjectLauncher.java b/inrt/src/main/java/com/stardust/auojs/inrt/launch/AssetsProjectLauncher.java index 0f6aa773..876f0ba1 100644 --- a/inrt/src/main/java/com/stardust/auojs/inrt/launch/AssetsProjectLauncher.java +++ b/inrt/src/main/java/com/stardust/auojs/inrt/launch/AssetsProjectLauncher.java @@ -11,11 +11,12 @@ import com.stardust.auojs.inrt.BuildConfig; import com.stardust.auojs.inrt.LogActivity; import com.stardust.auojs.inrt.Pref; import com.stardust.auojs.inrt.autojs.AutoJs; -import com.stardust.autojs.ScriptEngineService; import com.stardust.autojs.execution.ExecutionConfig; import com.stardust.autojs.execution.ScriptExecution; import com.stardust.autojs.project.ProjectConfig; import com.stardust.autojs.script.JavaScriptFileSource; +import com.stardust.autojs.script.JavaScriptSource; +import com.stardust.autojs.script.ScriptSource; import com.stardust.pio.PFiles; import com.stardust.pio.UncheckedIOException; @@ -49,13 +50,12 @@ public class AssetsProjectLauncher { public void launch(Activity activity) { //如果需要隐藏日志界面,则直接运行脚本 if (mProjectConfig.getLaunchConfig().shouldHideLogs() || Pref.shouldHideLogs()) { - activity.finish(); - runScript(); + runScript(activity); } else { //如果不隐藏日志界面 //如果当前已经是日志界面则直接运行脚本 if (activity instanceof LogActivity) { - runScript(); + runScript(null); } else { //否则显示日志界面并在日志界面中运行脚本 mHandler.post(() -> { @@ -67,15 +67,23 @@ public class AssetsProjectLauncher { } } - private void runScript() { + private void runScript(Activity activity) { if (mScriptExecution != null && mScriptExecution.getEngine() != null && !mScriptExecution.getEngine().isDestroyed()) { return; } try { JavaScriptFileSource source = new JavaScriptFileSource("main", mMainScriptFile); - mScriptExecution = AutoJs.getInstance().getScriptEngineService().execute(source, new ExecutionConfig() - .executePath(mProjectDir)); + ExecutionConfig config = new ExecutionConfig() + .executePath(mProjectDir); + if ((source.getExecutionMode() & JavaScriptSource.EXECUTION_MODE_UI) != 0) { + config.setIntentFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); + } else { + if (activity != null) { + activity.finish(); + } + } + mScriptExecution = AutoJs.getInstance().getScriptEngineService().execute(source, config); } catch (Exception e) { AutoJs.getInstance().getGlobalConsole().error(e); }