6.7.0 - Alpha17 - Fine tuning

This commit is contained in:
SuperMonster003
2026-01-22 00:53:09 +08:00
parent 0e2141a2ea
commit 54a6a36d36
10 changed files with 91 additions and 52 deletions

View File

@@ -37,6 +37,7 @@ import org.autojs.autojs.execution.ScriptExecution.AbstractScriptExecution
import org.autojs.autojs.inrt.autojs.LoopBasedJavaScriptEngineWithDecryption import org.autojs.autojs.inrt.autojs.LoopBasedJavaScriptEngineWithDecryption
import org.autojs.autojs.runtime.ScriptRuntime import org.autojs.autojs.runtime.ScriptRuntime
import org.autojs.autojs.script.ScriptSource import org.autojs.autojs.script.ScriptSource
import org.autojs.autojs.util.IntentUtils.startSafely
import org.autojs.autojs.util.ViewUtils import org.autojs.autojs.util.ViewUtils
import org.autojs.autojs6.R import org.autojs.autojs6.R
import org.mozilla.javascript.ContinuationPending import org.mozilla.javascript.ContinuationPending
@@ -184,10 +185,10 @@ class ScriptExecuteActivity : AppCompatActivity(), OnActivityResultDelegate.Dele
mScriptEngine.setTag(ScriptEngine.TAG_SOURCE, mScriptSource) mScriptEngine.setTag(ScriptEngine.TAG_SOURCE, mScriptSource)
mExecutionListener!!.onStart(mScriptExecution) mExecutionListener!!.onStart(mScriptExecution)
if (isInrt) { if (!isInrt) {
(mScriptEngine as LoopBasedJavaScriptEngineWithDecryption).execute(mScriptSource, executeCallback)
} else {
(mScriptEngine as LoopBasedJavaScriptEngine).execute(mScriptSource, executeCallback) (mScriptEngine as LoopBasedJavaScriptEngine).execute(mScriptSource, executeCallback)
} else {
(mScriptEngine as LoopBasedJavaScriptEngineWithDecryption).execute(mScriptSource, executeCallback)
} }
} }
@@ -304,11 +305,10 @@ class ScriptExecuteActivity : AppCompatActivity(), OnActivityResultDelegate.Dele
@JvmStatic @JvmStatic
fun execute(context: Context, manager: ScriptEngineManager, task: ScriptExecutionTask): ActivityScriptExecution { fun execute(context: Context, manager: ScriptEngineManager, task: ScriptExecutionTask): ActivityScriptExecution {
val execution = ActivityScriptExecution(manager, task) val execution = ActivityScriptExecution(manager, task)
val i = Intent(context, ScriptExecuteActivity::class.java) Intent(context, ScriptExecuteActivity::class.java)
.putExtra(EXTRA_EXECUTION_ID, execution.id) .putExtra(EXTRA_EXECUTION_ID, execution.id)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.addFlags(task.config.intentFlags) .addFlags(task.config.intentFlags)
context.startActivity(i) .startSafely(context)
return execution return execution
} }
} }

View File

@@ -6,6 +6,7 @@ import android.content.Intent
import android.provider.Settings import android.provider.Settings
import androidx.core.net.toUri import androidx.core.net.toUri
import org.autojs.autojs.ui.main.drawer.PermissionItemHelper import org.autojs.autojs.ui.main.drawer.PermissionItemHelper
import org.autojs.autojs.util.IntentUtils.start
import org.autojs.autojs.util.RomUtils import org.autojs.autojs.util.RomUtils
import org.autojs.autojs.util.ViewUtils import org.autojs.autojs.util.ViewUtils
import org.autojs.autojs6.R import org.autojs.autojs6.R
@@ -46,8 +47,7 @@ class VivoBackgroundPopupPermission(
"com.vivo.permissionmanager.activity.SoftPermissionDetailActivity", "com.vivo.permissionmanager.activity.SoftPermissionDetailActivity",
) )
.setAction("secure.intent.action.softPermissionDetail") .setAction("secure.intent.action.softPermissionDetail")
.putExtra("packagename", pkg) .putExtra("packagename", pkg),
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK),
// Older models may use PurviewTabActivity. // Older models may use PurviewTabActivity.
// zh-CN: 老机型可能使用 PurviewTabActivity. // zh-CN: 老机型可能使用 PurviewTabActivity.
@@ -57,8 +57,7 @@ class VivoBackgroundPopupPermission(
"com.vivo.permissionmanager.activity.PurviewTabActivity", "com.vivo.permissionmanager.activity.PurviewTabActivity",
) )
.putExtra("packagename", pkg) .putExtra("packagename", pkg)
.putExtra("tabId", "1") .putExtra("tabId", "1"),
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK),
// Some ROMs expose a background start manager page. // Some ROMs expose a background start manager page.
// zh-CN: 部分 ROM 暴露了后台启动管理页. // zh-CN: 部分 ROM 暴露了后台启动管理页.
@@ -66,8 +65,7 @@ class VivoBackgroundPopupPermission(
.setClassName( .setClassName(
"com.vivo.permissionmanager", "com.vivo.permissionmanager",
"com.vivo.permissionmanager.activity.BgStartUpManagerActivity", "com.vivo.permissionmanager.activity.BgStartUpManagerActivity",
) ),
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK),
) )
return tryStartActivities(intents) || openAppDetails() return tryStartActivities(intents) || openAppDetails()
@@ -76,7 +74,6 @@ class VivoBackgroundPopupPermission(
private fun openAppDetails(): Boolean = Intent() private fun openAppDetails(): Boolean = Intent()
.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) .setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
.setData("package:${context.packageName}".toUri()) .setData("package:${context.packageName}".toUri())
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.let { tryStartActivity(it) } .let { tryStartActivity(it) }
/** /**
@@ -128,7 +125,7 @@ class VivoBackgroundPopupPermission(
private fun tryStartActivity(i: Intent): Boolean = runCatching { private fun tryStartActivity(i: Intent): Boolean = runCatching {
val pm = context.packageManager val pm = context.packageManager
i.resolveActivity(pm) ?: return@runCatching false i.resolveActivity(pm) ?: return@runCatching false
context.startActivity(i) i.start(context)
true true
}.onFailure { }.onFailure {
it.printStackTrace() it.printStackTrace()

View File

@@ -7,6 +7,7 @@ import android.os.Process
import android.provider.Settings import android.provider.Settings
import androidx.core.net.toUri import androidx.core.net.toUri
import org.autojs.autojs.ui.main.drawer.PermissionItemHelper import org.autojs.autojs.ui.main.drawer.PermissionItemHelper
import org.autojs.autojs.util.IntentUtils.start
import org.autojs.autojs.util.RomUtils import org.autojs.autojs.util.RomUtils
import org.autojs.autojs.util.ViewUtils import org.autojs.autojs.util.ViewUtils
import org.autojs.autojs6.R import org.autojs.autojs6.R
@@ -46,8 +47,7 @@ class XiaomiBackgroundPopupPermission(
"com.miui.securitycenter", "com.miui.securitycenter",
"com.miui.permcenter.permissions.PermissionsEditorActivity", "com.miui.permcenter.permissions.PermissionsEditorActivity",
) )
.putExtra("extra_pkgname", pkg) .putExtra("extra_pkgname", pkg),
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK),
// Some MIUI versions use AppPermissionsEditorActivity. // Some MIUI versions use AppPermissionsEditorActivity.
// zh-CN: 部分 MIUI 版本使用 AppPermissionsEditorActivity. // zh-CN: 部分 MIUI 版本使用 AppPermissionsEditorActivity.
@@ -56,8 +56,7 @@ class XiaomiBackgroundPopupPermission(
"com.miui.securitycenter", "com.miui.securitycenter",
"com.miui.permcenter.permissions.AppPermissionsEditorActivity", "com.miui.permcenter.permissions.AppPermissionsEditorActivity",
) )
.putExtra("extra_pkgname", pkg) .putExtra("extra_pkgname", pkg),
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK),
) )
return tryStartActivities(intents) || openAppDetails() return tryStartActivities(intents) || openAppDetails()
@@ -66,7 +65,6 @@ class XiaomiBackgroundPopupPermission(
private fun openAppDetails(): Boolean = Intent() private fun openAppDetails(): Boolean = Intent()
.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS) .setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
.setData("package:${context.packageName}".toUri()) .setData("package:${context.packageName}".toUri())
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.let { tryStartActivity(it) } .let { tryStartActivity(it) }
/** /**
@@ -114,7 +112,7 @@ class XiaomiBackgroundPopupPermission(
private fun tryStartActivity(i: Intent): Boolean = runCatching { private fun tryStartActivity(i: Intent): Boolean = runCatching {
val pm = context.packageManager val pm = context.packageManager
i.resolveActivity(pm) ?: return@runCatching false i.resolveActivity(pm) ?: return@runCatching false
context.startActivity(i) i.start(context)
true true
}.onFailure { }.onFailure {
it.printStackTrace() it.printStackTrace()

View File

@@ -113,6 +113,26 @@ class Dialogs(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) {
private val presetAnimations = listOf("default", "activity", "dialog", "inputMethod", "toast", "translucent") private val presetAnimations = listOf("default", "activity", "dialog", "inputMethod", "toast", "translucent")
private val customJsPropertiesForBuild: Set<String> = setOf(
"preset",
"inputHint",
"inputPrefill",
"items",
"progress",
"checkBoxPrompt",
"checkBoxChecked",
"customView",
"stubborn",
"theme",
"linkify",
"onBackKey",
"onBackPressed",
"dimAmount",
"animation",
"keepScreenOn",
"inputSingleLine",
)
@JvmStatic @JvmStatic
@RhinoRuntimeFunctionInterface @RhinoRuntimeFunctionInterface
fun build(scriptRuntime: ScriptRuntime, args: Array<out Any?>): JsDialog = ensureArgumentsAtMost(args, 1) { argList -> fun build(scriptRuntime: ScriptRuntime, args: Array<out Any?>): JsDialog = ensureArgumentsAtMost(args, 1) { argList ->
@@ -460,23 +480,27 @@ class Dialogs(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) {
private fun applyDialogProperty(builder: JsDialogBuilder, name: String, value: Any?) { private fun applyDialogProperty(builder: JsDialogBuilder, name: String, value: Any?) {
when (val propertySetter = propertySetterMap[name]) { when (val propertySetter = propertySetterMap[name]) {
CVT_DEFAULT -> invokeMethod(builder, name, arrayOf(value)) CVT_DEFAULT -> invokeJavaMethod(builder, name, arrayOf(value))
CVT_DEFAULT_STRICT_BOOLEAN -> { CVT_DEFAULT_STRICT_BOOLEAN -> {
if (value == true) { if (value == true) {
invokeMethod(builder, name, emptyArray()) invokeJavaMethod(builder, name, emptyArray())
} }
} }
CVT_COLOR_INT -> { CVT_COLOR_INT -> {
val colorInt = Colors.toIntRhino(value) val colorInt = Colors.toIntRhino(value)
invokeMethod(builder, name, arrayOf(colorInt)) invokeJavaMethod(builder, name, arrayOf(colorInt))
} }
is String -> when (propertySetter) { is String -> when (propertySetter) {
in propertySetterMap -> { in propertySetterMap -> {
applyDialogProperty(builder, propertySetter, value) applyDialogProperty(builder, propertySetter, value)
} }
else -> invokeMethod(builder, propertySetter, arrayOf(value)) else -> invokeJavaMethod(builder, propertySetter, arrayOf(value))
}
else -> {
if (!customJsPropertiesForBuild.contains(name)) {
invokeJavaMethod(builder, name, arrayOf(value))
}
} }
else -> invokeMethod(builder, name, arrayOf(value))
} }
} }
@@ -766,13 +790,13 @@ class Dialogs(scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime) {
} }
} }
private fun invokeMethod(builder: JsDialogBuilder, key: String, argsForMethod: Array<out Any?>) { private fun invokeJavaMethod(builder: JsDialogBuilder, key: String, argsForMethod: Array<out Any?>) {
val methods = builder.javaClass.methods val methods = builder.javaClass.methods
val targetMethodsForName = methods.filter { val targetMethodsForName = methods.filter {
it.name == key it.name == key
} }
if (targetMethodsForName.isEmpty()) { require(targetMethodsForName.isNotEmpty()) {
return "Method key \"$key\" for dialogs.build is not a valid method name"
} }
val targetMethodsForParamCount = targetMethodsForName.filter { val targetMethodsForParamCount = targetMethodsForName.filter {
it.parameterCount == argsForMethod.size it.parameterCount == argsForMethod.size

View File

@@ -2,7 +2,6 @@ package org.autojs.autojs.runtime.api.augment.shell
import android.util.Log import android.util.Log
import android.view.KeyEvent import android.view.KeyEvent
import androidx.annotation.IntRange
import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface import org.autojs.autojs.annotation.RhinoRuntimeFunctionInterface
import org.autojs.autojs.extension.AnyExtensions.isJsNullish import org.autojs.autojs.extension.AnyExtensions.isJsNullish
import org.autojs.autojs.extension.AnyExtensions.jsBrief import org.autojs.autojs.extension.AnyExtensions.jsBrief

View File

@@ -65,7 +65,7 @@ public class RootUtils {
private static boolean isSuPresentFast() { private static boolean isSuPresentFast() {
try { try {
// 1. Check common su paths. // 1. Check common su paths.
// zh-CN: 1. 检查常见 su 路径. // zh-CN: 检查常见 su 路径.
for (String path : COMMON_SU_PATHS) { for (String path : COMMON_SU_PATHS) {
if (isExecutableFile(path)) { if (isExecutableFile(path)) {
return true; return true;
@@ -73,7 +73,7 @@ public class RootUtils {
} }
// 2. Check su in PATH environment. // 2. Check su in PATH environment.
// zh-CN: 2. 检查 PATH 环境中的 su. // zh-CN: 检查 PATH 环境中的 su.
String envPath = System.getenv("PATH"); String envPath = System.getenv("PATH");
if (envPath != null && !envPath.isEmpty()) { if (envPath != null && !envPath.isEmpty()) {
String[] paths = envPath.split(":"); String[] paths = envPath.split(":");

View File

@@ -67,6 +67,7 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
import org.autojs.autojs.app.GlobalAppContext import org.autojs.autojs.app.GlobalAppContext
import org.autojs.autojs.core.pref.Pref import org.autojs.autojs.core.pref.Pref
import org.autojs.autojs.runtime.ScriptRuntime
import org.autojs.autojs.theme.ThemeColorManager import org.autojs.autojs.theme.ThemeColorManager
import org.autojs.autojs.util.StringUtils.key import org.autojs.autojs.util.StringUtils.key
import org.autojs.autojs6.R import org.autojs.autojs6.R
@@ -1155,7 +1156,11 @@ object ViewUtils {
@JvmStatic @JvmStatic
fun showSnack(view: View, stringRes: Int, isLong: Boolean) { fun showSnack(view: View, stringRes: Int, isLong: Boolean) {
try {
Snackbar.make(view, stringRes, if (isLong) Snackbar.LENGTH_LONG else Snackbar.LENGTH_SHORT).show() Snackbar.make(view, stringRes, if (isLong) Snackbar.LENGTH_LONG else Snackbar.LENGTH_SHORT).show()
} catch (e: IllegalStateException) {
ScriptRuntime.popException(e.message)
}
} }
@JvmStatic @JvmStatic
@@ -1163,14 +1168,30 @@ object ViewUtils {
@JvmStatic @JvmStatic
fun showSnack(view: View, string: CharSequence, isLong: Boolean) { fun showSnack(view: View, string: CharSequence, isLong: Boolean) {
try {
Snackbar.make(view, string, if (isLong) Snackbar.LENGTH_LONG else Snackbar.LENGTH_SHORT).show() Snackbar.make(view, string, if (isLong) Snackbar.LENGTH_LONG else Snackbar.LENGTH_SHORT).show()
} catch (e: IllegalStateException) {
ScriptRuntime.popException(e.message)
}
} }
@JvmStatic @JvmStatic
fun showSnack(view: View, stringRes: Int, duration: Int) = Snackbar.make(view, stringRes, duration).show() fun showSnack(view: View, stringRes: Int, duration: Int) {
try {
Snackbar.make(view, stringRes, duration).show()
} catch (e: IllegalStateException) {
ScriptRuntime.popException(e.message)
}
}
@JvmStatic @JvmStatic
fun showSnack(view: View, string: CharSequence, duration: Int) = Snackbar.make(view, string, duration).show() fun showSnack(view: View, string: CharSequence, duration: Int) {
try {
Snackbar.make(view, string, duration).show()
} catch (e: IllegalStateException) {
ScriptRuntime.popException(e.message)
}
}
fun setKeepScreenOnWhenInForegroundDisabled() { fun setKeepScreenOnWhenInForegroundDisabled() {
Pref.putString(R.string.key_keep_screen_on_when_in_foreground, key(R.string.key_keep_screen_on_when_in_foreground_disabled)) Pref.putString(R.string.key_keep_screen_on_when_in_foreground, key(R.string.key_keep_screen_on_when_in_foreground_disabled))

View File

@@ -111,8 +111,8 @@ public final class OpenCLGuard {
// 2) Try loading (absolute path first, then loadLibrary("OpenCL")). // 2) Try loading (absolute path first, then loadLibrary("OpenCL")).
// zh-CN: 2) 尝试加载 (绝对路径优先, 其次 loadLibrary("OpenCL")). // zh-CN: 2) 尝试加载 (绝对路径优先, 其次 loadLibrary("OpenCL")).
boolean loadOk = false; boolean loadOk = false;
// 2.1 Absolute path dlopen. // 2.1. Absolute path dlopen.
// zh-CN: 2.1 绝对路径 dlopen. // zh-CN: 绝对路径 dlopen.
if (hitPath != null) { if (hitPath != null) {
try { try {
System.load(hitPath); System.load(hitPath);
@@ -122,8 +122,8 @@ public final class OpenCLGuard {
Log.i(TAG, "[OpenCL] System.load failed: " + hitPath + " -> " + t.getClass().getSimpleName()); Log.i(TAG, "[OpenCL] System.load failed: " + hitPath + " -> " + t.getClass().getSimpleName());
} }
} }
// 2.2 Regular link name. // 2.2. Regular link name.
// zh-CN: 2.2 常规链接名. // zh-CN: 常规链接名.
if (!loadOk) { if (!loadOk) {
try { try {
System.loadLibrary("OpenCL"); System.loadLibrary("OpenCL");

View File

@@ -1,5 +1,5 @@
#Wed Jan 21 22:51:23 CST 2026 #Thu Jan 22 00:50:41 CST 2026
BUILD_TIME=1769007083119 BUILD_TIME=1769014241677
COMPILE_SDK_VERSION=36 COMPILE_SDK_VERSION=36
IMAGE_QUANT_CMAKE_VERSION=3.22.1 IMAGE_QUANT_CMAKE_VERSION=3.22.1
IMAGE_QUANT_NDK_VERSION=26.1.10909125 IMAGE_QUANT_NDK_VERSION=26.1.10909125
@@ -27,6 +27,6 @@ RAPID_OCR_OPENCV_MOBILE_LABEL_VERSION=13
RAPID_OCR_OPENCV_MOBILE_VERSION=4.5.3 RAPID_OCR_OPENCV_MOBILE_VERSION=4.5.3
TARGET_SDK_VERSION=36 TARGET_SDK_VERSION=36
TARGET_SDK_VERSION_INRT=29 TARGET_SDK_VERSION_INRT=29
VERSION_BUILD=3644 VERSION_BUILD=3645
VERSION_NAME=6.7.0 Alpha17 VERSION_NAME=6.7.0 Alpha17
VSCODE_EXT_REQUIRED_VERSION=1.0.13 VSCODE_EXT_REQUIRED_VERSION=1.0.13