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

@@ -67,9 +67,9 @@
"li_major_changes_new_modules": "新モジュール [ [base64](https://docs.autojs6.com/#/base64) / [crypto](https://docs.autojs6.com/#/crypto) / [sqlite](https://docs.autojs6.com/#/sqlite) / [i18n](https://docs.autojs6.com/#/i18n) / [notice](https://docs.autojs6.com/#/notice) / [ocr](https://docs.autojs6.com/#/ocr) / [opencc](https://docs.autojs6.com/#/opencc) / [qrcode](https://docs.autojs6.com/#/qrcode) / [shizuku](https://docs.autojs6.com/#/shizuku) / ... ]", "li_major_changes_new_modules": "新モジュール [ [base64](https://docs.autojs6.com/#/base64) / [crypto](https://docs.autojs6.com/#/crypto) / [sqlite](https://docs.autojs6.com/#/sqlite) / [i18n](https://docs.autojs6.com/#/i18n) / [notice](https://docs.autojs6.com/#/notice) / [ocr](https://docs.autojs6.com/#/ocr) / [opencc](https://docs.autojs6.com/#/opencc) / [qrcode](https://docs.autojs6.com/#/qrcode) / [shizuku](https://docs.autojs6.com/#/shizuku) / ... ]",
"li_major_changes_night_mode_support": "ナイトモード対応 [ 設定ページ / ドキュメントページ / レイアウト分析ページ / 浮動ウィンドウ / ... ]", "li_major_changes_night_mode_support": "ナイトモード対応 [ 設定ページ / ドキュメントページ / レイアウト分析ページ / 浮動ウィンドウ / ... ]",
"li_major_changes_rhino_engine_upgrade": "[Rhino](https://github.com/mozilla/rhino/)エンジンが [v1.7.7.2](https://github.com/mozilla/rhino/releases/tag/Rhino1_7_7_2_Release) から {{ latest_rhino_engine_name_with_github_lineno_address }} ({{ var_date_rhino_engine_latest_committed }} 更新) にアップグレードされました", "li_major_changes_rhino_engine_upgrade": "[Rhino](https://github.com/mozilla/rhino/)エンジンが [v1.7.7.2](https://github.com/mozilla/rhino/releases/tag/Rhino1_7_7_2_Release) から {{ latest_rhino_engine_name_with_github_lineno_address }} ({{ var_date_rhino_engine_latest_committed }} 更新) にアップグレードされました",
"li_major_changes_shizuku_adb_privileges_support": "[Shizuku](https://shizuku.rikka.app/introduction/)経由でADB特権を取得し, システムAPIを使用可能", "li_major_changes_shizuku_adb_privileges_support": "[Shizuku](https://shizuku.rikka.app/introduction/) 経由でADB特権を取得し, システムAPIを使用可能",
"li_major_changes_theme_color_support": "テーマカラーの適応 [ グループ化 / ロケーション / 検索 / 履歴 / 明るさとコントラストの自動適応 / ... ]", "li_major_changes_theme_color_support": "テーマカラーの適応 [ グループ化 / ロケーション / 検索 / 履歴 / 明るさとコントラストの自動適応 / ... ]",
"li_major_changes_vscode_plugin_support": "[VSCodeプラグイン](http://vscext-project.autojs6.com)がクライアント (LAN)とサーバ (LAN/ADB)接続方法をサポート", "li_major_changes_vscode_plugin_support": "[VSCodeプラグイン](http://vscext-project.autojs6.com)がクライアント (LAN)とサーバ (LAN/ADB) 接続方法をサポート",
"li_major_changes_websocket_support": "[WebSocket](https://docs.autojs6.com/#/webSocketType)インスタンスの作成, および[WebSocketプロトコル](https://ja.wikipedia.org/wiki/WebSocket)に基づくネットワークリクエストの処理をサポート", "li_major_changes_websocket_support": "[WebSocket](https://docs.autojs6.com/#/webSocketType)インスタンスの作成, および[WebSocketプロトコル](https://ja.wikipedia.org/wiki/WebSocket)に基づくネットワークリクエストの処理をサポート",
"li_manual_documentation": "アプリケーションドキュメント", "li_manual_documentation": "アプリケーションドキュメント",
"li_manual_troubleshooting": "トラブルシューティング", "li_manual_troubleshooting": "トラブルシューティング",
@@ -83,7 +83,7 @@
"li_rhino_feature_rhino_engine_compatibility_list": "Rhinoエンジンの[互換リスト](https://mozilla.github.io/rhino/compat/engines.html)を見る", "li_rhino_feature_rhino_engine_compatibility_list": "Rhinoエンジンの[互換リスト](https://mozilla.github.io/rhino/compat/engines.html)を見る",
"li_rhino_feature_rhino_engine_new_features": "Rhinoエンジンの[新機能](http://project.autojs6.com/blob/master/app/src/main/assets-app/doc/RHINO.md)を見る", "li_rhino_feature_rhino_engine_new_features": "Rhinoエンジンの[新機能](http://project.autojs6.com/blob/master/app/src/main/assets-app/doc/RHINO.md)を見る",
"li_rhino_feature_template_strings_support": "[テンプレート文字列](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Template_literals)のサポート", "li_rhino_feature_template_strings_support": "[テンプレート文字列](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Template_literals)のサポート",
"li_rhino_feature_unicode_code_point_escapes_support": "Unicode [コードポイント](https://developer.mozilla.org/ja/docs/Glossary/Code_point)エスケープのサポート [補助平面](https://ja.wikipedia.org/wiki/多言語面#補助平面)文字", "li_rhino_feature_unicode_code_point_escapes_support": "Unicode [コードポイント](https://developer.mozilla.org/ja/docs/Glossary/Code_point)エスケープのサポート [補助平面](https://ja.wikipedia.org/wiki/多言語面#補助平面) 文字",
"p_android_sdk_preparation_auto_sdk_location_filled": "上記の `Android SDK場所` の欄が自動的に入力され, SDKの準備が完了します", "p_android_sdk_preparation_auto_sdk_location_filled": "上記の `Android SDK場所` の欄が自動的に入力され, SDKの準備が完了します",
"p_android_sdk_preparation_edit_sdk_location": "`Android SDK場所` の欄が空白の場合は, 右側の `編集` ボタンをクリックし, 表示されるウィンドウで `次へ` ボタンを数回クリックします", "p_android_sdk_preparation_edit_sdk_location": "`Android SDK場所` の欄が空白の場合は, 右側の `編集` ボタンをクリックし, 表示されるウィンドウで `次へ` ボタンを数回クリックします",
"p_android_sdk_preparation_finish_sdk_installation": "関連するリソースのダウンロードとインストールが完了したら, `完了` ボタンをクリックします", "p_android_sdk_preparation_finish_sdk_installation": "関連するリソースのダウンロードとインストールが完了したら, `完了` ボタンをクリックします",
@@ -133,7 +133,7 @@
"p_jdk_preparation_jdk_max_supported_version": "{{ var_date_jdk_max_supported }} 現在, AutoJs6がサポートする最大のJDKバージョンは `{{ jdk_max_supported }}` です", "p_jdk_preparation_jdk_max_supported_version": "{{ var_date_jdk_max_supported }} 現在, AutoJs6がサポートする最大のJDKバージョンは `{{ jdk_max_supported }}` です",
"p_jdk_preparation_jdk_version_requirements": "AutoJs6プロジェクトが依存する `JDK (Java開発キット)` のリリースバージョンは少なくとも `{{ jdk_min_supported }}` で, それ以下のバージョンは推奨されませんが, 最低でも `{{ jdk_min_suggested }}` の使用を推奨します", "p_jdk_preparation_jdk_version_requirements": "AutoJs6プロジェクトが依存する `JDK (Java開発キット)` のリリースバージョンは少なくとも `{{ jdk_min_supported }}` で, それ以下のバージョンは推奨されませんが, 最低でも `{{ jdk_min_suggested }}` の使用を推奨します",
"p_jdk_preparation_open_jdk_settings": "`Gradle JDK` の設定ページを開く (いずれかの方法)", "p_jdk_preparation_open_jdk_settings": "`Gradle JDK` の設定ページを開く (いずれかの方法)",
"p_jdk_preparation_select_existing_jdk": "リストに適切なバージョンのJDKが存在する場合(>= `{{ jdk_min_supported }}`), それを選択してください", "p_jdk_preparation_select_existing_jdk": "リストに適切なバージョンのJDKが存在する場合 (>= `{{ jdk_min_supported }}`), それを選択してください",
"p_jdk_preparation_select_gradle_jdk": "`Gradle JDK` で異なるバージョンの JDK を選択または追加できます", "p_jdk_preparation_select_gradle_jdk": "`Gradle JDK` で異なるバージョンの JDK を選択または追加できます",
"p_languages_all_supported_for_readme": "現在の README.md ファイルは以下の言語に対応しています", "p_languages_all_supported_for_readme": "現在の README.md ファイルは以下の言語に対応しています",
"p_major_changes_autojs6_version_updates": "Auto.js の最終オープンソースバージョン `4.1.1 Alpha2` と比較して, AutoJs6 は以下のアップグレードまたは変更を行いました", "p_major_changes_autojs6_version_updates": "Auto.js の最終オープンソースバージョン `4.1.1 Alpha2` と比較して, AutoJs6 は以下のアップグレードまたは変更を行いました",

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
@@ -39,15 +40,14 @@ class VivoBackgroundPopupPermission(
val intents = listOf( val intents = listOf(
// Vivo permission detail page (commonly works on many models). // Vivo permission detail page (commonly works on many models).
// zh-CN: Vivo 权限详情页(较多机型可用). // zh-CN: Vivo 权限详情页 (较多机型可用).
Intent() Intent()
.setClassName( .setClassName(
"com.vivo.permissionmanager", "com.vivo.permissionmanager",
"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) }
/** /**
@@ -110,7 +107,7 @@ class VivoBackgroundPopupPermission(
// /** // /**
// * Check whether this looks like a vivo/iQOO device. // * Check whether this looks like a vivo/iQOO device.
// * zh-CN: 判断是否为 vivo/iQOO 设备(经验判断). // * zh-CN: 判断是否为 vivo/iQOO 设备 (经验判断).
// */ // */
// private fun isVivoLikeDevice(): Boolean { // private fun isVivoLikeDevice(): Boolean {
// val brand = (Build.BRAND ?: "").lowercase() // val brand = (Build.BRAND ?: "").lowercase()
@@ -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,12 +65,11 @@ 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) }
/** /**
* Check MIUI "background start activity" app-op (commonly op=10021). * Check MIUI "background start activity" app-op (commonly op=10021).
* zh-CN: 检查 MIUI "后台启动界面" 的 AppOps 状态(常见 op=10021). * zh-CN: 检查 MIUI "后台启动界面" 的 AppOps 状态 (常见 op=10021).
*/ */
private fun isMiuiBgStartPermissionGranted(context: Context): Boolean { private fun isMiuiBgStartPermissionGranted(context: Context): Boolean {
val ops = context.getSystemService(Context.APP_OPS_SERVICE) as? AppOpsManager ?: return true val ops = context.getSystemService(Context.APP_OPS_SERVICE) as? AppOpsManager ?: return true
@@ -96,7 +94,7 @@ class XiaomiBackgroundPopupPermission(
// /** // /**
// * Check whether this looks like a Xiaomi/Redmi/POCO device. // * Check whether this looks like a Xiaomi/Redmi/POCO device.
// * zh-CN: 判断是否为 Xiaomi/Redmi/POCO 设备(经验判断). // * zh-CN: 判断是否为 Xiaomi/Redmi/POCO 设备 (经验判断).
// */ // */
// private fun isXiaomiLikeDevice(): Boolean { // private fun isXiaomiLikeDevice(): Boolean {
// val brand = (Build.BRAND ?: "").lowercase() // val brand = (Build.BRAND ?: "").lowercase()
@@ -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()
@@ -124,7 +122,7 @@ class XiaomiBackgroundPopupPermission(
private companion object { private companion object {
// MIUI app-op code for background start activity (commonly 10021). // MIUI app-op code for background start activity (commonly 10021).
// zh-CN: MIUI 后台启动界面常见的 AppOps 编号(通常为 10021). // zh-CN: MIUI 后台启动界面常见的 AppOps 编号 (通常为 10021).
private const val OP_BACKGROUND_START_ACTIVITY = 10021 private const val OP_BACKGROUND_START_ACTIVITY = 10021
} }

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
@@ -303,7 +304,7 @@ object ViewUtils {
if (systemUiHeightInset in 1..maxReasonable) return systemUiHeightInset if (systemUiHeightInset in 1..maxReasonable) return systemUiHeightInset
// Otherwise, try to remove an estimated nav bar height (dimen only). // Otherwise, try to remove an estimated nav bar height (dimen only).
// zh-CN: 否则尝试减去导航栏估值(仅 dimen), 再次校验. // zh-CN: 否则尝试减去导航栏估值 (仅 dimen), 再次校验.
val navBar = getNavigationBarHeightByDimen(context, withComputedOnPreR = false).coerceAtLeast(0) val navBar = getNavigationBarHeightByDimen(context, withComputedOnPreR = false).coerceAtLeast(0)
val guess = (systemUiHeightInset - navBar).coerceAtLeast(0) val guess = (systemUiHeightInset - navBar).coerceAtLeast(0)
@@ -1155,7 +1156,11 @@ object ViewUtils {
@JvmStatic @JvmStatic
fun showSnack(view: View, stringRes: Int, isLong: Boolean) { fun showSnack(view: View, stringRes: Int, isLong: Boolean) {
Snackbar.make(view, stringRes, if (isLong) Snackbar.LENGTH_LONG else Snackbar.LENGTH_SHORT).show() try {
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) {
Snackbar.make(view, string, if (isLong) Snackbar.LENGTH_LONG else Snackbar.LENGTH_SHORT).show() try {
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