优化 打包后的UI脚本
修复 getClip()偶发报错问题
This commit is contained in:
@@ -20,6 +20,7 @@ public class ExecutionConfig implements Serializable {
|
||||
public long interval = 0;
|
||||
public int loopTimes = 1;
|
||||
private Map<String, Object> 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) {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
"ui";
|
||||
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.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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user