优化 打包后的UI脚本
修复 getClip()偶发报错问题
This commit is contained in:
@@ -20,6 +20,7 @@ public class ExecutionConfig implements Serializable {
|
|||||||
public long interval = 0;
|
public long interval = 0;
|
||||||
public int loopTimes = 1;
|
public int loopTimes = 1;
|
||||||
private Map<String, Object> mArguments = new HashMap<>();
|
private Map<String, Object> mArguments = new HashMap<>();
|
||||||
|
private int mIntentFlags = 0;
|
||||||
|
|
||||||
public static ExecutionConfig getDefault() {
|
public static ExecutionConfig getDefault() {
|
||||||
return new ExecutionConfig();
|
return new ExecutionConfig();
|
||||||
@@ -32,6 +33,15 @@ public class ExecutionConfig implements Serializable {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getIntentFlags() {
|
||||||
|
return mIntentFlags;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ExecutionConfig setIntentFlags(int intentFlags) {
|
||||||
|
mIntentFlags = intentFlags;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public ExecutionConfig requirePath(String... requirePath) {
|
public ExecutionConfig requirePath(String... requirePath) {
|
||||||
mRequirePath = new ArrayList<>(Arrays.asList(requirePath));
|
mRequirePath = new ArrayList<>(Arrays.asList(requirePath));
|
||||||
if (mExecutePath != null) {
|
if (mExecutePath != null) {
|
||||||
|
|||||||
@@ -49,7 +49,8 @@ public class ScriptExecuteActivity extends AppCompatActivity {
|
|||||||
ActivityScriptExecution execution = new ActivityScriptExecution(manager, task);
|
ActivityScriptExecution execution = new ActivityScriptExecution(manager, task);
|
||||||
Intent i = new Intent(context, ScriptExecuteActivity.class)
|
Intent i = new Intent(context, ScriptExecuteActivity.class)
|
||||||
.putExtra(EXTRA_EXECUTION_ID, execution.getId())
|
.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);
|
context.startActivity(i);
|
||||||
return execution;
|
return execution;
|
||||||
}
|
}
|
||||||
@@ -140,7 +141,7 @@ public class ScriptExecuteActivity extends AppCompatActivity {
|
|||||||
protected void onDestroy() {
|
protected void onDestroy() {
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
Log.d(LOG_TAG, "onDestroy");
|
Log.d(LOG_TAG, "onDestroy");
|
||||||
if(mScriptEngine != null){
|
if (mScriptEngine != null) {
|
||||||
mScriptEngine.put("activity", null);
|
mScriptEngine.put("activity", null);
|
||||||
mScriptEngine.setTag("activity", null);
|
mScriptEngine.setTag("activity", null);
|
||||||
mScriptEngine.destroy();
|
mScriptEngine.destroy();
|
||||||
|
|||||||
@@ -18,7 +18,8 @@ public class ClipboardUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static CharSequence getClip(Context context) {
|
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
|
@NonNull
|
||||||
|
|||||||
@@ -1 +1,2 @@
|
|||||||
|
"ui";
|
||||||
console.error("打包出错啦~ 使用文件夹打包请把主脚本改名为main.js");
|
console.error("打包出错啦~ 使用文件夹打包请把主脚本改名为main.js");
|
||||||
|
|||||||
@@ -11,11 +11,12 @@ import com.stardust.auojs.inrt.BuildConfig;
|
|||||||
import com.stardust.auojs.inrt.LogActivity;
|
import com.stardust.auojs.inrt.LogActivity;
|
||||||
import com.stardust.auojs.inrt.Pref;
|
import com.stardust.auojs.inrt.Pref;
|
||||||
import com.stardust.auojs.inrt.autojs.AutoJs;
|
import com.stardust.auojs.inrt.autojs.AutoJs;
|
||||||
import com.stardust.autojs.ScriptEngineService;
|
|
||||||
import com.stardust.autojs.execution.ExecutionConfig;
|
import com.stardust.autojs.execution.ExecutionConfig;
|
||||||
import com.stardust.autojs.execution.ScriptExecution;
|
import com.stardust.autojs.execution.ScriptExecution;
|
||||||
import com.stardust.autojs.project.ProjectConfig;
|
import com.stardust.autojs.project.ProjectConfig;
|
||||||
import com.stardust.autojs.script.JavaScriptFileSource;
|
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.PFiles;
|
||||||
import com.stardust.pio.UncheckedIOException;
|
import com.stardust.pio.UncheckedIOException;
|
||||||
|
|
||||||
@@ -49,13 +50,12 @@ public class AssetsProjectLauncher {
|
|||||||
public void launch(Activity activity) {
|
public void launch(Activity activity) {
|
||||||
//如果需要隐藏日志界面,则直接运行脚本
|
//如果需要隐藏日志界面,则直接运行脚本
|
||||||
if (mProjectConfig.getLaunchConfig().shouldHideLogs() || Pref.shouldHideLogs()) {
|
if (mProjectConfig.getLaunchConfig().shouldHideLogs() || Pref.shouldHideLogs()) {
|
||||||
activity.finish();
|
runScript(activity);
|
||||||
runScript();
|
|
||||||
} else {
|
} else {
|
||||||
//如果不隐藏日志界面
|
//如果不隐藏日志界面
|
||||||
//如果当前已经是日志界面则直接运行脚本
|
//如果当前已经是日志界面则直接运行脚本
|
||||||
if (activity instanceof LogActivity) {
|
if (activity instanceof LogActivity) {
|
||||||
runScript();
|
runScript(null);
|
||||||
} else {
|
} else {
|
||||||
//否则显示日志界面并在日志界面中运行脚本
|
//否则显示日志界面并在日志界面中运行脚本
|
||||||
mHandler.post(() -> {
|
mHandler.post(() -> {
|
||||||
@@ -67,15 +67,23 @@ public class AssetsProjectLauncher {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void runScript() {
|
private void runScript(Activity activity) {
|
||||||
if (mScriptExecution != null && mScriptExecution.getEngine() != null &&
|
if (mScriptExecution != null && mScriptExecution.getEngine() != null &&
|
||||||
!mScriptExecution.getEngine().isDestroyed()) {
|
!mScriptExecution.getEngine().isDestroyed()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
JavaScriptFileSource source = new JavaScriptFileSource("main", mMainScriptFile);
|
JavaScriptFileSource source = new JavaScriptFileSource("main", mMainScriptFile);
|
||||||
mScriptExecution = AutoJs.getInstance().getScriptEngineService().execute(source, new ExecutionConfig()
|
ExecutionConfig config = new ExecutionConfig()
|
||||||
.executePath(mProjectDir));
|
.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) {
|
} catch (Exception e) {
|
||||||
AutoJs.getInstance().getGlobalConsole().error(e);
|
AutoJs.getInstance().getGlobalConsole().error(e);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user